У меня есть две различных операции. Первые запуски второй. Во втором действии я звоню System.exit(0)
чтобы вынудить приложение закрыться, но первое действие автоматически отображено вместо приложения, возвращающегося к главному экрану. Как я могу избежать этого и заставить приложение возвращаться к главному экрану?
Вы действительно должны подумать о том, чтобы не выходить на приложение. Это не так, как обычно работают приложения для Android.
Вы не можете сделать System.exit(), это небезопасно.
Вы можете сделать это: Process.killProcess(Process.myPid());
Краткий ответ: Вызов MOVETASKTOBACK (TRUE)
на вашем активности
вместо System.exit ()
. Это скрыт ваше приложение, пока пользователь не хочет использовать его снова.
Чем дольше ответа начинается с другого вопроса: почему вы хотите убить свое приложение?
ОС Android обрабатывает управление и процессы памяти и так далее, так что мой совет, просто пусть Android беспокоится об этом для вас. Если пользователь хочет оставить свое приложение, они могут нажать на домашнюю кнопку, и ваше приложение будет эффективно исчезнуть. Если телефон нуждается в большем количестве памяти, позже ОС будет прекратить ваше приложение.
До тех пор, пока вы , отвечая на события жизненного цикла соответственно , ни вы, ни пользователю не должны заботиться, если ваше приложение все еще работает или нет.
Так что, если вы хотите скрыть свое приложение Call MOVETASKTOBACK ()
и пусть Android решит, когда убить его.
Вы также можете указать noHistory = "true" в теге для первого действия или закончить первое действие, как только Вы начнете второе (как сказал Дэвид).
AFAIK, "force close" убивает процесс, в котором хостится JVM, в котором запущено ваше приложение, и System.exit() завершает работу JVM, выполняющего экземпляр вашего приложения. Оба варианта являются формой резких окончаний и не рекомендуются для нормального потока приложений.
Так же, как и перехват исключений для охвата логических потоков, которые может выполнять программа, не рекомендуется.
При запуске второй активности Fine ()
Первый немедленно:
startActivity(new Intent(...));
finish();
android.os.Process.killProcess (android.os.Process.myPid ());
работает нормально, но рекомендуется позволить платформе Android позаботиться об управлении памятью: -)