簡體   English   中英

Android應用程序進程重新啟動時如何保留應用程序EditText數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM