2014-10-08 4 views
1

Когда мое приложение переходит на задний план, и я получаю широковещательную передачу, что мое приложение находится в противоречивом состоянии, и я хочу убедиться, что в следующий раз, когда приложение появится на переднем плане, я запустил Launcher (или root). Для этого у меня есть следующие подходы,Убейте все действия, когда приложение находится в фоновом режиме

  1. Все мои действия вытекают из базы. При возобновлении проверки состояния приложения в базе. Запустите Корневую активность, если состояние непоследовательно. Проблема: приложение должно быть быстрым, и проверка состояния - вызов db. Также будет видимый флип для деятельности Root, которого я хочу избежать.

  2. Поймать деятельность переднего плана в широковещательном приемнике, очистить задачу и запустить основное действие. Проблема: Я должен поддерживать ссылку на верхнюю активность, как описано here.

  3. Убейте процесс в широковещательном приемнике, когда достигнуто несогласованное состояние.

Каков наилучший подход?

ответ

0

В вашей основной деятельности вы можете проверить состояние в onCreate() и либо продолжить запуск своей основной деятельности, либо, если ваше состояние команды так, немедленно вызовите финиш() в свою основную деятельность и запустите все необходимые действия.

2

Вы можете установить android:noHistory="true" в свой AndroidManifest.xml.

Если пользователь переходит от вашего приложения (он перемещается в фоновом режиме), действие завершается, и ваше приложение будет перезапущено.


Чтобы запустить корневой Activit только тогда, когда происходит событие, используйте этот код:

Intent intent = new Intent(context, yourRootActivity.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); 
startActivity(intent); 

Это гарантирует, что все старые действия закончены, и вновь начал деятельность будет «корневая активность» новой задачи , Source

+0

Я хочу, чтобы «нет истории», это произойдет, только когда событие происходит не всегда. – yagnasri

+0

@yagnasri Затем вам нужно запустить действие и передать флаги, чтобы все старые действия были закончены. См. Мой обновленный ответ. – Manu