2017-02-27 8 views
1

當我正在瀏覽應用程序的示例代碼時,我多次遇到了onsaveInstanceState方法。我們爲什麼一般使用它?android studio中的saved-Instance-state有什麼用?

+0

這是。不是關於android studio!這是關於活動生命週期。 – ziLk

+0

請參考官方文檔:https://developer.android.com/guide/components/activities/activity-lifecycle.html#saras –

回答

1

Android組件(如碎片和活動)具有生命週期。由於多種原因,這些組件可能會停止,啓動或完全從內存中取出。 onSaveInstanceState()和其他此類生命週期回調使您有機會保存用戶返回到應用程序時要恢復的任何應用程序狀態。

例如,假設您的應用程序中有一個簡單的文本字段。考慮這個工作流程:

  1. 用戶打開您的應用程序
  2. 用戶到您的文本字段中輸入一些信息
  3. 用戶得到通知說,他們有一個新的電子郵件,並在該通知點擊閱讀電子郵件
  4. 用戶返回到應用程序

在這種情況下,您可能希望保留用戶的輸入身邊,使他們不必再重新輸入。這是對組件已保存的實例狀態的很好的使用。

您可能會問「爲什麼我需要恢復該狀態,是不是已經存在了?」簡短的答案是「這取決於」。如果用戶僅在短時間內離開了您的應用程序,並且手機內存充足,則您的組件可能仍在內存中,您無需擔心。但是,Android操作系統可能需要將應用程序從內存中取出來爲其他應用程序騰出空間。在這種情況下,如果用戶返回到應用程序,您的應用程序將有機會(通過onSaveInstanceState()和朋友)堅持任何狀態。

請注意,許多View已經這樣做,包括EditText。但是您可以想象許多類似的用例,如果用戶離開您的應用程序,您需要保存某種應用程序狀態。

+0

很好的解釋,非常感謝:d – Morl

0

當Activity被操作系統強制終止時使用它(例如:當Activity在後臺並且另一個任務需要資源時)。發生這種情況時,onSaveInstanceState(Bundle outstate)將被調用,並且取決於您的應用程序添加要保存在outstate中的任何狀態數據。

當用戶恢復的活動,

的onCreate(捆綁savedInstanceState)

被調用和savedInstanceState將非空,如果您的活性在上述的場景終止。然後,您的應用程序可以從savedInstanceState中獲取數據,並將您的活動狀態重新生成爲用戶上次看到它時的狀態。

基本上在onCreate,當savedInstanceState爲null時,這意味着這是一個'新鮮'啓動你的活動。當它的非空(如果你的應用程序中保存的onSaveInstanceState(...)的數據,這意味着活動狀態,需要重新創建

編輯:另外,請要求搜索之前What is 'savedInstanceState'?

相關問題