當我正在瀏覽應用程序的示例代碼時,我多次遇到了onsaveInstanceState
方法。我們爲什麼一般使用它?android studio中的saved-Instance-state有什麼用?
回答
Android組件(如碎片和活動)具有生命週期。由於多種原因,這些組件可能會停止,啓動或完全從內存中取出。 onSaveInstanceState()
和其他此類生命週期回調使您有機會保存用戶返回到應用程序時要恢復的任何應用程序狀態。
例如,假設您的應用程序中有一個簡單的文本字段。考慮這個工作流程:
- 用戶打開您的應用程序
- 用戶到您的文本字段中輸入一些信息
- 用戶得到通知說,他們有一個新的電子郵件,並在該通知點擊閱讀電子郵件
- 用戶返回到應用程序
在這種情況下,您可能希望保留用戶的輸入身邊,使他們不必再重新輸入。這是對組件已保存的實例狀態的很好的使用。
您可能會問「爲什麼我需要恢復該狀態,是不是已經存在了?」簡短的答案是「這取決於」。如果用戶僅在短時間內離開了您的應用程序,並且手機內存充足,則您的組件可能仍在內存中,您無需擔心。但是,Android操作系統可能需要將應用程序從內存中取出來爲其他應用程序騰出空間。在這種情況下,如果用戶返回到應用程序,您的應用程序將有機會(通過onSaveInstanceState()
和朋友)堅持任何狀態。
請注意,許多View
已經這樣做,包括EditText
。但是您可以想象許多類似的用例,如果用戶離開您的應用程序,您需要保存某種應用程序狀態。
很好的解釋,非常感謝:d – Morl
當Activity被操作系統強制終止時使用它(例如:當Activity在後臺並且另一個任務需要資源時)。發生這種情況時,onSaveInstanceState(Bundle outstate)將被調用,並且取決於您的應用程序添加要保存在outstate中的任何狀態數據。
當用戶恢復的活動,
的onCreate(捆綁savedInstanceState)
被調用和savedInstanceState將非空,如果您的活性在上述的場景終止。然後,您的應用程序可以從savedInstanceState中獲取數據,並將您的活動狀態重新生成爲用戶上次看到它時的狀態。
基本上在onCreate,當savedInstanceState爲null時,這意味着這是一個'新鮮'啓動你的活動。當它的非空(如果你的應用程序中保存的onSaveInstanceState(...)的數據,這意味着活動狀態,需要重新創建
編輯:另外,請要求搜索之前What is 'savedInstanceState'?
- 1. 什麼是'捆綁savedInstanceState`
- 2. 什麼是onCreate(Bundle savedInstanceState)
- 3. 使用Android studio有什麼好處
- 4. 爲什麼沒有Android Studio中2.1.2
- 5. 損壞的Android savedInstanceState
- 6. android onCreate(Bundle savedInstanceState)
- 7. Android onRestoreInstanceState(Bundle savedInstanceState)
- 8. 什麼是Android Studio中
- 9. 我的Android Studio gradle有什麼問題?
- 10. onSaveInstanceState()事件中savedInstanceState和outState有什麼區別?
- 11. Android Studio中的「Lookup Down」和「Lookup Up」操作有什麼作用?
- 12. Android Studio中的「Incremental Dex」選項有什麼作用?
- 13. onCreate(savedInstanceState)savedInstanceState爲NULL
- 14. Xamarin中Android中「savedInstanceState」和「bundle」的區別?
- 15. Android Studio Beta Channel,Android Studio Canary Channel,Android Studio Dev Channel有什麼區別?
- 16. 什麼是在Android Studio中的代碼
- 17. Android Studio中的Maven是什麼?
- 18. android studio中的dimens.xml(w820dp)是什麼?
- 19. Android:使用帶片段的savedInstanceState
- 20. 這段代碼在android studio中使用camera有什麼不對?
- 21. content_main.xml在android studio 1.4中有什麼作用?
- 22. 爲什麼Android studio中的類中有一個類?
- 23. 爲什麼Android Studio中有這麼多元數據文件?
- 24. getIntent()和從savedInstanceState獲取意圖有什麼區別?
- 25. Android Studio爲什麼分支
- 26. Android Studio - 這是什麼?
- 27. Visual Studio中的TestContext - 它有什麼作用?由Visual Studio生成
- 28. Android部分持久savedInstanceState
- 29. 爲什麼android studio中的某些方法標有一行?
- 30. Android Studio中的Acitvity_Main.xml和Fragment_main.xml文件有什麼區別
這是。不是關於android studio!這是關於活動生命週期。 – ziLk
請參考官方文檔:https://developer.android.com/guide/components/activities/activity-lifecycle.html#saras –