Лучший способ выйти из приложения Android? - PullRequest
4 голосов
/ 02 марта 2012

Я ищу способ выйти из моего приложения для Android по коду. Да, я знаю, я не должен был делать это, потому что Android обрабатывает это, когда вы нажимаете кнопку «Назад», но у меня есть настроенный поток, который заставляет меня реализовать это. Я уже некоторое время искал и нашел несколько ответов:

  • Это не должно быть сделано => Нет варианта.
  • Вызвать финиш () в моей деятельности => Только для 1 действия, а не для всего приложения.
  • Начать Намерение к первому действию со специальным флагом => У меня есть несколько точек входа, поэтому на самом деле не вариант.
  • Просто убейте мой собственный процесс => Не уверен насчет этого, вызовет ли это метод onDestroy () во всех действиях? И будут ли мои фоновые службы продолжать работать с этим? (Который не должен быть остановлен)

Так что мне интересно, есть ли другой способ выйти из моего приложения, или я действительно ограничен этими опциями? Если на самом деле другого варианта нет, то я подумывал создать список всех экземпляров моих действий в моем классе Application, а затем просто зациклить их, чтобы вызвать final () для них. Но я не знаю, будет ли это правильным способом справиться с этим.

Так вот почему я задаю свой вопрос здесь, какой лучший способ закрыть мое приложение?

Редактировать: Я более или менее исправил проблему. У меня есть список слабых ссылок моей деятельности. В каждом onCreate я добавляю активность в список. Затем, когда я хочу выйти из приложения, я просто зацикливаю список и вызываю finish (). Проблема в том, что: если список станет слишком большим, он не завершит все мои действия, так как Android уже уничтожил их. Поэтому каждый раз, когда я точно знаю, что они мне больше не нужны, я заканчиваю их. В моем случае список не может превышать 3/4, поэтому больше не нужно беспокоиться о том, что действия не будут завершены. Также с этим методом мне не нужно разрушать мой собственный процесс.

Ответы [ 4 ]

3 голосов
/ 02 марта 2012

используйте ниже код.

android.os.Process.killProcess(android.os.Process.myPid());
    System.runFinalizersOnExit(true);
3 голосов
/ 02 марта 2012

Вы не должны этого делать, но в любом случае, если вы настаиваете:

System.exit(0);
0 голосов
/ 12 апреля 2012

Не рекомендуется, но все же вы можете использовать это.Лучше использовать это решение на тот случай, если вам нужно выйти из приложения.

По моему мнению, лучшее решение - завершить все действия в вашем приложении, как показано ниже.

step1) поддерживать статическую переменную в mainacctivityскажем.

public static isQuit = false;

step2) при событии нажатия кнопки установите для этой переменной значение true.

 mainactivity.isQuit = true;

step3) И в каждом действии вашего приложения есть метод onrestart, как показано ниже ..

 @Override
      protected void onRestart() {
         // TODO Auto-generated method stub
         super.onRestart();
        if(mainactivity.isQuit)
            finish();
    }
0 голосов
/ 02 марта 2012

Вы можете сохранить список всех запущенных действий в Списке (используйте WeakReference, чтобы избежать утечки памяти). Чтобы выйти из приложения, сначала вызовите метод finish для каждого элемента, а затем вызовите android.os.Process.killProcess (android.os.Process.myPid ());

...