Как программно выйти из приложения Android?
Я уверен, что этот вопрос задавался несколько раз, потому что я читал несколько. Мой клиент хочет, чтобы я поместил кнопку в его приложение, где пользователи могут щелкнуть и выйти. Я прочитал это и нашел, что вызов finish()
сделает это. Но завершить - это только закрытие текущей текущей деятельности, верно? У меня много заданий, поэтому в этом случае я должен пройти каждый экземпляр задания и завершить его или превратить каждое действие в шаблон Singleton.
Я также узнал, что Activity.moveTaskToBack(true)
может вывести вас на главный экран. Хорошо, это не закрытие, а фоновый процесс. Так это эффективно?
Какой метод я должен использовать, чтобы полностью закрыть приложение? Любой из описанных выше или любой другой метод/другое использование вышеуказанных методов?
Ответы
Ответ 1
На самом деле каждый ищет закрытие приложения в событии onclick, где бы это ни было....
Итак, друзья друзей пробовали этот код. Поместите этот код в событие onclick
Intent homeIntent = new Intent(Intent.ACTION_MAIN);
homeIntent.addCategory( Intent.CATEGORY_HOME );
homeIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(homeIntent);
Ответ 2
Вы можете вызвать System.exit(); чтобы выйти из всех занятий.
submit=(Button)findViewById(R.id.submit);
submit.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(1);
}
});
Ответ 3
Если вы хотите выйти из приложения, используйте этот код внутри нажатой кнопки:
public void onBackPressed() {
moveTaskToBack(true);
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(1);
}
Ответ 4
@Override
public void onBackPressed() {
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
alertDialogBuilder.setTitle("Exit Application?");
alertDialogBuilder
.setMessage("Click yes to exit!")
.setCancelable(false)
.setPositiveButton("Yes",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
moveTaskToBack(true);
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(1);
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
}
Ответ 5
Это слишком легко. Используйте System.exit(0);
Ответ 6
Случайно есть две возможные ситуации:
- Вы можете выйти из деятельности
- Или вы хотите выйти из приложения
Вы можете выйти из действия, используя следующий код:
var intent = new Intent(Intent.ActionMain);
intent.AddCategory(Intent.CategoryHome);
intent.SetFlags(ActivityFlags.NewTask);
startActivity(intent);
finish();
Но это не убьет основные действия в том же приложении. Это просто свернет приложение.
Если вы хотите выйти из приложения, используйте следующий код для завершения процесса:
android.os.Process.killProcess(android.os.Process.myPid());
для моно разработки просто используйте
process.KillProcess(Process.MyPid());
Ответ 7
Начиная с api 16, вы можете использовать метод finishAffinity, который, кажется, довольно близок к закрытию всех связанных действий по его имени и описанию javadoc:
this.finishAffinity();
Завершите это действие, а также все действия непосредственно под ним в текущем задании, которые имеют ту же привязку. Это обычно используется, когда приложение может быть запущено для другой задачи (например, из ACTION_VIEW типа контента, который он понимает), и пользователь использовал навигацию вверх для переключения из текущей задачи и в свою собственную задачу. В этом случае, если пользователь перешел к любым другим действиям второго приложения, все они должны быть удалены из исходной задачи как часть переключения задачи.
Обратите внимание, что это завершение не позволяет вам доставлять результаты к предыдущему действию, и будет выдано исключение, если вы попытаетесь это сделать.
Начиная с API 21 вы можете использовать очень похожую команду
finishAndRemoveTask();
Завершает все действия в этой задаче и удаляет ее из списка недавних задач.
Альтернативы:
getActivity().finish();
System.exit(0);
int pid = android.os.Process.myPid();
android.os.Process.killProcess(pid);
Process.sendSignal(Process.myPid(), Process.SIGNAL_KILL);
Intent i = new Intent(context, LoginActivity.class);
i.putExtra(EXTRA_EXIT, true);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
context.startActivity(i);
Источник: Как выйти из приложения Android программно
Надеюсь, поможет! Удачи!
Ответ 8
android.os.Process.killProcess(android.os.Process.myPid());
Ответ 9
Как насчет this.finishAffinity()
В документах
Завершите это действие, а также все действия непосредственно под ним в текущей задаче с одинаковой близостью. Обычно это используется, когда приложение может быть запущено на другую задачу (например, из ACTION_VIEW типа контента, который он понимает), и пользователь использовал навигацию вверх для переключения из текущей задачи и в свою собственную задачу. В этом случае, если пользователь перешел в другие действия второго приложения, все они должны быть удалены из исходной задачи как часть переключателя задачи. Обратите внимание, что это завершение не позволяет доставлять результаты предыдущему действию, и если вы пытаетесь сделать это, будет создано исключение.
Ответ 10
@Override
public void onBackPressed() {
Intent homeIntent = new Intent(Intent.ACTION_MAIN);
homeIntent.addCategory( Intent.CATEGORY_HOME );
homeIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(homeIntent);
}
Ответ 11
Используйте this.finishAffinity(); на этой кнопке вместо финиша(); Если это не сработает, попробуйте добавить в манифест андроид: noHistory = "true", а затем завершите свою деятельность с помощью функции uisng finish(); или finishAffinity();
Надеюсь, поможет....:)
Ответ 12
поместите это в свой onClic:
moveTaskToBack(true);
finish()
Ответ 13
Попробуйте это при вызове. Я иногда использую его в onClick кнопки.
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
Вместо того, чтобы закрывать приложение, открывается панель управления, поэтому похоже, что ваше приложение закрыто.
прочитайте этот вопрос для большей ясности
android - код выхода из программы
Ответ 14
это очистит Task (стек действий) и начнет новую задачу
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
System.exit(1);
Ответ 15
Достижение в Xamarin. Android:
public override void OnBackPressed()
{
MoveTaskToBack(true);
Process.KillProcess(Process.MyPid());
Environment.Exit(1);
}
Ответ 16
активность призрака, вызываемая с помощью singleletop и finish() на onCreate, должна делать трюк
Ответ 17
Он работает только с moveTaskToBack(true);
Ответ 18
Если кто-то все еще задается вопросом, для Xamarin.Android (в моем случае это также Monogame, работающая на нем) команда FinishAndRemoveTask()
в Activity
делает работу очень хорошо!
Ответ 19
просто используйте код в своем обратном порядке
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
Ответ 20
Если вы используете EventBus (или действительно любую другую паб/вспомогательную библиотеку) в своем приложении для связи между действиями, которые вы можете отправить их явное событие:
final public class KillItWithFireEvent
{
public KillItWithFireEvent() {}
public static void send()
{
EventBus.getDefault().post(new KillItWithFireEvent());
}
}
Единственным недостатком этого является то, что вам нужно все действия, чтобы прослушать это событие, чтобы вызвать их собственный finish()
. Для этого вы можете легко создавать классы активности шайбы через наследование, которые просто прослушивают это событие и позволяют подклассам реализовать все остальное, а затем убедитесь, что все ваши действия наследуются от этого дополнительного слоя. Слушатели-убийцы могут даже добавить некоторые дополнительные функции с помощью переопределений, например, избегая смерти в определенных ситуациях.
Ответ 21
Вместо System.exit(1) Просто используйте System.exit(0)
Ответ 22
Просто запустите две строки ниже, если вы хотите выйти из приложения
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(1);
Ответ 23
во фрагменте
. GetActivity() finishAndRemoveTask();
в деятельности
finishAndRemoveTask();
Ответ 24
Just call these two Function
finish();
moveTaskToBack(true);
Ответ 25
просто добавьте этот код: -
@Override
public void onBackPressed() {
finish();
super.onBackPressed();
}
Ответ 26
Если вы используете как финиш, так и выходите из приложения, вы будете тесно сотрудничать
отделка();
System.exit(0);
Ответ 27
finish();
finishAffinity();
System.exit(0);
работал на меня