![](/img/trans.png)
[英]Android: How to save objects initialised in the Application class when the System Restarts my App Process
[英]How to retain app EditText data when Android app process restarts
當我們在應用程序運行時拒絕設置頁面中的任何權限時。 Android 殺死了我們的應用程序。 並重新創建一切(片段和活動)。 viewModel 也被清除。 這會導致在任何編輯文本字段中鍵入的文本被清除。 僅供參考,在創建片段時,savedInstanceState 將是非空的。 但是我在某些應用程序中看到,例如 Gmail、地圖,在進程重新啟動時會保留表單數據。 誰能解釋在重新創建過程時如何保留編輯文本數據?
您可以使用SavedStateHandle
保留ViewModel
數據。
class MyViewModel(private val state: SavedStateHandle) : ViewModel() { ... }
SavedStateHandle
是一個鍵值映射,您可以在其中保存您的EditText
內容。 即使進程被系統殺死,該值仍將保持不變。 您可以使用相同的鍵檢索值。
要設置值:
savedStateHandle["text"] = text
並將其取回只需使用以下語句:
savedStateHandle["text"]
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
// store your data
outState.putString("some code", "111")
outState.putString("some code1", "222")
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// read your data
savedInstanceState.getString("some code")
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.