【问题标题】:Can I know I'm returning from a SavedState in Android ViewModel?我可以知道我正在从 Android ViewModel 中的 SavedState 返回吗?
【发布时间】:2022-01-03 10:37:58
【问题描述】:

在Activity或Fragment中,在onCreate期间,我们会知道它是否是一个restored State,例如

override fun onCreate(savedInstanceState: Bundle?) {

    if (savedInstanceState == null) {
        // This is a newly created View
    } else {
        // This is a restored View
    }
}

在 ViewModel 中,我们也有 SavedStateHandler

class MyViewModel(val savedStateHandle: SavedStateHandle) : ViewModel() {

    init {
         // How can I know if this is a restored state or a newly created Viewmodel?
    }

}

但是在 ViewModel 中是否可以知道它是否是恢复状态?

【问题讨论】:

    标签: android android-viewmodel android-savedstate


    【解决方案1】:

    如果您使用 SavedStateHandle 在 ViewModel 中保存您需要的内容,只需检查它是否存在,如果存在,则 ViewModel 正在从保存的状态恢复。

    如果您不保存任何内容,而只是想遵循与上面显示的相同的逻辑,那么您可以执行以下操作:

    class MyViewModel(val savedStateHandle: SavedStateHandle) : ViewModel() {
    
        init {
             if (savedStateHandle.contains("some_key")) {
                 // This is restoring from the saved state
             } else {
                savedStateHandle["some_key"] = true
                // Continue your initial initialization
             }
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多