как перезапустить приложение, когда процессы делают мягкий перезапуск? - PullRequest
0 голосов
/ 18 ноября 2018

Edit: Боюсь, мой первоначальный вопрос не понял, как я задумал, поэтому я перефразирую его. При некоторых обстоятельствах (отзыв разрешения, очистка памяти) ОС выполняет «мягкий» перезапуск процесса приложения. Когда пользователь снова откроет приложение, ОС запустит последнее действие, использованное до перезапуска процессов. Есть ли способ сказать ОС не пытаться восстановить последнее состояние приложения и просто начать с самого начала?

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

Проблема все еще в том, что ОС не уведомляет о таком событии, что не оставляет другого выбора, кроме как обрабатывать его вручную. например. проверить, не было ли получено разрешение onCreate() и onResume() из Activity - и чем действовать соответственно, например. очистить стек и затем накачать первый фрагмент.

единственный виновник - режим разделенного экрана, при котором onResume() не сработает, просто потому, что он никогда не вызывал событие onPause(). Я имею в виду настройки разрешений с одной стороны, приложение с другой стороны. чтобы справиться с этим, придется периодически проверять состояние разрешений.

0 голосов
/ 18 ноября 2018

Используйте эту библиотеку https://github.com/JakeWharton/ProcessPhoenix. Вы можете настроить перезапуск с помощью этого.

Запустить действие по умолчанию в новом процессе:

ProcessPhoenix.triggerRebirth(context);

Или, если вы хотите запустить с определенным намерением:

Intent nextIntent = //...
ProcessPhoenix.triggerRebirth(context, nextIntent);

Если вы хотите перезапустить приложение, когда оно переходит в фоновый режим, а agin перейти на передний план, используйте android:noHistory="true" для определенных действий в Android Manifest.xml file

...