Что произойдет при выполнении System.exit (0)? - PullRequest
4 голосов
/ 07 февраля 2012

У меня есть два разных вида деятельности.Первый запускает второй.

Intent intent = new Intent(this, Activity2.class);
startActivity(intent);

Во втором упражнении я вызываю System.exit (0).Первое действие возвращается из-за «стека страниц», я думаю.Но я обнаружил, что произошло две вещи.

  1. вариант в процессе потерял свою ценность.(Думаю, перезапуск хода выполнения)
  2. файл, созданный в первом действии, и добавленные данные во втором задании и сохраненные, потерянные! (Стерты из песочницы)Файл, который я создал с помощью applicationContext.openFileOutput(fileName, Context.MODE_PRIVATE);

Была ли песочница очищена в этой ситуации?Обычный выход по «ключу возврата» или даже android.os.Process.killProcess(android.os.Process.myPid()), файл в песочнице был сохранен.Итак, что же на самом деле произошло при выполнении System.exit (0)?

Спасибо!

Ответы [ 4 ]

9 голосов
/ 07 февраля 2012

Вы можете сделать одну вещь:

Не используйте System.exit (0); , вместо этого вы можете просто использовать finish () следующим образом:

Intent intent = new Intent(this, Activity2.class);
startActivity(intent);
finish();

Здесь данные не будут потеряными. HTH:)

2 голосов
/ 25 июля 2013

Что произойдет при выполнении System.exit (0)?

Виртуальная машина останавливает дальнейшее выполнение и программа завершается.

Теперь в вашем случаепервая активность возвращается из-за стека активности.Поэтому, когда вы переходите от одного действия к другому, используя Intent, выполните finish() текущего действия следующим образом.

Intent intent=new Intent(getApplicationContext(), NextActivity.class);
startActivity(intent);
CurrentActivity.this.finish();

Это будет гарантировать, что при закрытии приложения никакие действия не будут выполняться.

А для выхода из приложения используйте этот код:

MainActivity.this.finish();          
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(0);
getParent().finish();

И вам не следует использовать System.exit(), если ваше приложение использует какой-либо ресурс в фоновом режиме, например, музыкальный проигрыватель, который воспроизводит песню из фона, или любое приложение, которое используетИнтернет-данные в фоновом режиме или любой виджет, который зависит от вашего приложения.

Для получения дополнительной информации перейдите по следующим ссылкам:

  1. Не одобряется ли выход из приложения?
  2. http://android -developers.blogspot.in / 2010/04 / многозадачность-android-way.html
1 голос
/ 07 февраля 2012

Прочитайте документацию:

http://developer.android.com/reference/java/lang/System.html#exit(int)

0 голосов
/ 13 мая 2015

Итак, что же на самом деле произошло при выполнении System.exit (0)?

android.os.Process.killProcess(android.os.Process.myPid()) и System.exit(0) одинаковы. Когда вы вызываете любой из них из второго действия, приложение будет закрыто и снова открыто только с одним действием (мы предполагаем, что у вас было 2 действия). Вы можете проверить это поведение, включив ведение журнала (Log.i("myTag", "MainActivity started");) в метод OnCreate своей основной деятельности.

...