通過 Activity 獲取 ViewModel 時遇到的坑:
在 Application.ActivityLifecycleCallbacks 中的 onActivityCreated 方法中獲取 ViewModel 時, Activity 每重建一次, 獲取的 ViewModel 都是重新構建後的新實例, 並不能讓 ViewModel 以及 ViewModel 中的數據倖免於 Activity 重建, 所以不要此方法中獲取 ViewModel
在 Activity 的 onDestroy 方法中不能獲取 ViewModel, 會報錯
通過 Fragment 獲取 ViewModel 時遇到的坑:
在 FragmentManager.FragmentLifecycleCallbacks 中的 onFragmentAttached 方法中獲取 ViewModel 時也會出現和 Activity 一樣的情況, 獲取的 ViewModel 是重新構建後的新實例, ViewModel 以及 ViewModel 中的數據不能倖免於 Activity 重建, 所以也不要此方法中獲取 ViewModel
在 FragmentManager.FragmentLifecycleCallbacks 中的 onFragmentDestroyed 方法中也不能獲取 ViewModel, 會報錯
在 Fragment 的 onDestroy 方法中不能獲取 ViewModel, 會報錯
作者:JessYan
鏈接:https://juejin.im/post/5a31f6b951882503eb4b4b21
來源:掘金
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。