2012-06-02 20 views
2

我有一個主題爲對話框的活動。我已經看到,如果顯示對話框,然後按Home按鈕,然後使用任務管理器,重新啓動應用程序,該對話框活動將成爲應用程序啓動的活動,並且沒有其他活動可供返回至。也就是說,我加載對話框活動時運行的活動未運行。所以我只是將這個以對話爲主題的活動懸停在桌面上。這就說得通了。我從不想從頭開始的Android活動

查看Android活動生命週期,操作系統確實記得上次的活動並嘗試重新啓動。所以我在我的活動中創建了所有on *方法(onResume,onRestart等)。我發現的確令人費解。當我重新啓動,從任務管理器應用程序,下面的方法被稱爲:

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

在哪裏,我真的只是希望

onRestart() 
onCreate() 
onResume() 
  • 爲什麼的onStop和的onDestroy獲取調用,對嗎?爲什麼對話仍然顯示,即使onDestroy被調用?
  • 我該如何配置此應用程序,以便它永遠不會僅僅在此對話框中啓動?如果應用程序以相同的「父」活動及其上面的對話框(即,就像我離開它)那樣重新啓動,或者只有父活動正在運行並且對話框已被解除,那麼我會很好。

回答

1

在這種情況下,您應該在Dialog代碼中調用finish()。當用戶離開你的應用程序(當他們進入主頁按鈕,他們接到電話等等時會發生這種情況)時,你希望這樣做。在這種情況下,您需要在對話框的onStop()中撥打finish()。調用完成當前的活動將其從堆棧中移除,從本質上講,您可以描述您所描述的行爲。

+0

我試過你的建議,並打電話完成()在onStop(),但它沒有奏效。它沒有改變一件事。它仍然在對話框活動中重新啓動。 – MrGibbage

+0

哦,我也沒有歷史=「真」,finishOnTaskLaunch =「真」在清單。 – MrGibbage

+0

嘗試將finish()調用放入您的活動的onPause()方法中。 – Krylez