2012-06-02 1 views
2

У меня есть действие, которое называется тематическим диалогом. Я видел, что если диалог показывается, а затем я нажимаю кнопку «домой», а затем, используя диспетчер задач, перезапускает приложение, этот активный диалог будет активностью, которую запускает приложение, без каких-либо других действий, доступных для возврата к. То есть, активность, выполнявшаяся при загрузке активности диалога, не выполняется. Поэтому у меня просто есть эта диалоговая тема, зависающая над рабочим столом. В этом есть смысл.Активность Android, которую я никогда не хочу начинать с

Оглядываясь на жизненный цикл Android-активности, ОС запоминает последнее действие и пытается его перезапустить. Поэтому я создал все методы on * в моей деятельности (onResume, onRestart и т. Д.). То, что я нашел, было действительно озадачивающим. Когда я перезапустить приложение из диспетчера задач, называются следующие методы:

onCreate() 
onResume() 
onStop() 
onDestroy() 

Где я был на самом деле просто ожидал

onRestart() 
onCreate() 
onResume() 
  • Почему OnStop и OnDestroy вызывался сразу же? И почему диалог все еще отображается, даже если onDestroy вызывается?
  • Как настроить это приложение так, чтобы оно никогда не начиналось только в этом диалоговом окне? Я был бы в порядке с перезапуском приложения с тем же «родительским» действием и над ним над ним (то есть, как я его оставил), или только с запущенным родительским действием, и диалог отклонен.

ответ

1

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

+0

Я попробовал то, что вы предложили, и поместил вызов finish() в onStop(), но это не сработало. Это ничего не изменило. Он по-прежнему перезапускается в диалоговом режиме. – MrGibbage

+0

О, и у меня также есть noHistory = "true" и finishOnTaskLaunch = "true" в манифесте. – MrGibbage

+0

Попробуйте поместить вызов finish() в метод onPause() вашей активности. – Krylez

Смежные вопросы