請指定您的意思是應用程序重置。
當你按下電源按鈕時,很有可能你的應用程序停止。這就是爲什麼你看到onStart()
被叫停止(不是:暫停)您的應用程序。
鑑於這種情況,您描述的第三種情況是前兩種情況的組合嗎?換句話說,您如何在第三種情況下暫停您的應用程序?
更新關於您的評論:還有就是你的活動是停止和你的活動是破壞之間的差異。
旋轉是配置更改。在這種情況下,您的Activity將被銷燬並重新創建。如果您必須(取決於)onRetainNonConfigurationInstance()
回調方法和getLastNonConfigurationInstance()
方法,您可以單獨處理此案例。安卓將呼叫onPause()
,onStop()
,onRetainNonConfigurationInstance()
和順序onDestroy()
,然後用onCreate()
等繼續,它將不處理任何事件,在此期間,使他們不會迷路。
最有可能的,你的一些代碼位於錯誤的回調,使得在第三場景中,一些沒有得到初始化/連接/ ...這是真的很難說沒有代碼和異常(如果它是例外)。
我建議你按以下步驟操作。
- 完成你的整個生命週期的理解和精確(創建,啓動,重啓,恢復,暫停,停止,銷燬)
- 完成你的代碼覆蓋其他生命週期回調以及與日誌消息(唐」別忘了調用超類的回調),並分析暫停,停止,旋轉和組合
- 確定墜機
- 的角度分析在事故involvedd結合活動的生命週期對象的生命週期
或者你可以在這裏發佈一些代碼和例外,當然。
更新2我對AVD進行了測試。我觀察到以下內容:
當AVD處於橫向方向時,我按下電源按鈕,我的應用程序會收到縱向配置更改(大概是因爲縱向方向鎖定屏幕接管)。再次按下電源並解鎖AVD,應用程序會再次收到配置更改,回到橫向。
雖然沒有解決您的問題,但它表明代碼必須仔細放置在相應的回調中,因爲在上述情況下,在重新創建時,活動仍不會顯示,顯示爲。
如果更新您的問題,請給我評論。
所有的測試都是在模擬器上進行的。在第三次測試中,我按下電源按鈕,等待屏幕鎖定,旋轉屏幕並將其解鎖。很顯然,這種情況與我只是旋轉屏幕或簡單地鎖定屏幕並將其解鎖的情況有所不同。 在前兩種情況下,我總是發現onStart()是運行的,所以我認爲這三項活動都被銷燬了。但爲什麼會有差異? – 2013-03-06 09:13:34
@BeppiMenozzi我已經更新了我的答案。 - 吉茲,我不知道爲什麼有人低估了它。可能是沒有掌握這個主題的人。或者有人點擊了錯誤的箭頭。 – 2013-03-06 09:33:46
你的回答並不是絕對值得讚賞的,我投票補償:)當然是因爲這是一個很好的答案。 – 2013-03-06 10:13:06