當我的應用在「頂部」運行時鎖定屏幕時,系統幾乎立即調用onCreate(屏幕仍爲黑色)。這種破壞行爲的原因是什麼?鎖定屏幕後調用Android onCreate
回答
這是Android操作系統的工作原理,它決定何時銷燬您的視圖。當您鎖定手機時,您的應用會進入活動生命週期的暫停狀態(onPause)。
當活動處於暫停狀態,如果它需要大量的內存,Android系統已經幹掉你的應用程序(的onStop)的權利。
所以它必須調用onCreate重新創建您的視圖,當你解鎖它。當後屏幕會返回你看到桌面上(的onDestroy()關閉應用程序)
當鎖定屏幕時,它實際上進入'onPause',然後到'onStop'。 – TronicZomB 2013-05-01 14:35:33
我雖然我的意思是說你的應用程序進入暫停狀態 – user2336315 2013-05-01 14:36:44
調用創建時系統要摧毀我的活動似乎不是很合乎邏輯... – user2224350 2013-05-01 14:39:04
的onDestroy()被調用。
屏幕之後又回來了,你看到你的應用程序的第一個佈局/視圖,然後這就是所謂的onStop()和的onCreate()。
後,屏幕又回來了,你看到屏幕前的相同觀點得好快的onPause()和onResume()被調用。
對於我來說,我
android:configChanges="orientation"
但這並沒有幫助,因爲我的活動是全屏,所以我在活動標籤
添加
android:configChanges="keyboardHidden|orientation|screenSize"
正如上文Handling the Configuration Change Yourself
如果y我們的應用程序不需要在特定配置更改期間更新資源,並且您有一個性能限制,要求您避免重新啓動活動,然後您可以聲明您的活動處理配置更改本身,從而防止系統重新啓動活動。
這種情況如果活動是風景模式和鎖定屏幕是由用戶啓用。
可以有這背後有兩個原因:
如果任何類型的鎖屏啓用並活動在風景模式: 如果設備在人像模式中,鎖定屏幕時,該設備已被鎖定它會自動切換到肖像模式(即使您的活動處於風景模式)。當設備解鎖時,您的活動變得可見,但它仍然從肖像(鎖定時)轉換到橫向,因此活動將被銷燬並重新創建。
這是Android操作系統是如何工作的,它決定何時摧毀你的看法。當您鎖定手機時,您的應用會進入活動生命週期的暫停狀態(onPause)。 當活動處於暫停狀態時,如果需要大量內存,則系統有權終止您的應用(onStop,然後是onDestroy)。所以當你解鎖它時,系統調用(onCreate)來重新創建你的視圖。
解決方案:
- 你應該仔細保存和使用
onSaveInstanceState()
或 - 使用
android:configChanges="orientation|screenSize"
中體現你的活動標籤檢查狀態。
- 1. 鎖定屏幕在Android中
- 2. Android鎖定屏幕方向並離開onCreate()未觸及
- 3. Android解鎖屏幕,然後重新鎖定屏幕(Nook簡單觸摸)
- 4. 屏幕鎖定Contineously
- 5. 使用python調用鎖定屏幕
- 6. 屏幕鎖定應用程序調用
- 7. 鎖定屏幕
- 8. 鎖定屏幕
- 9. Android:解鎖屏幕
- 10. 鎖定屏幕後運行的Android應用程序
- 11. 屏幕鎖定後重置計時器
- 12. 解鎖屏幕後的Android調用活動
- 13. 鎖定MFC屏幕
- 14. Android:onRestoreInstanceState在屏幕喚醒(並鎖定)後未調用
- 15. onCreate在屏幕旋轉時未調用 - Android
- 16. 調試時設備屏幕鎖定
- 17. 屏幕鎖定時的狀態欄android
- 18. Android:屏幕關閉和鎖定通知?
- 19. 替換android中的鎖定屏幕
- 20. 在Android 2.0中實現屏幕鎖定
- 21. Android 2.2屏幕鎖定安全
- 22. Android鎖定AppWidgetProvider中的屏幕
- 23. Android的個性化鎖定屏幕
- 24. android中的屏幕鎖定密碼
- 25. Cordova - Android,推送通知鎖定屏幕?
- 26. 啓動Android本機鎖定屏幕
- 27. 在鎖定的Android屏幕上顯示
- 28. Android:與屏幕交互鎖定按鈕
- 29. Android SDL2在鎖定屏幕上恢復
- 30. 在屏幕滾動過多之後,在屏幕上鎖定div?
當屏幕方向發生變化時,會調用onCreate,當屏幕尺寸發生變化時,將調用Android的更高版本。很難說沒有發佈任何代碼或XML,爲什麼會發生這種情況。要停止在我的一些應用程序中調用onCreate',我在屏幕方向或大小改變時調用了'android:configChanges =「keyboardHidden | orientation | screenSize」'來調用我不想調用'onCreate'的活動。 – HeatfanJohn 2013-05-01 14:35:37
+1 Downvoters應該添加一條評論,提供關於如何改善問題時的重要反饋,當downvoting時。 – HeatfanJohn 2013-05-01 14:37:35