我刚刚开始学习 Android 中的 jetpack compose。我看到了可用于撰写的视图模型依赖项。我的问题很简单 compose 中 view model 的生命周期是什么?例如,我创建了呈现整个屏幕的可组合函数,并且我在其中传递视图模型。此视图模型是否取决于可组合项、活动或片段生命周期。这让我有点困惑,或者我走错了路。
谢谢
简而言之,
ViewModel
有自己的生命周期,其中有onCleared()
回调,当视图模型的LifecycleOwner
被销毁时调用。
compose中视图模型的生命周期是怎样的?
这个视图模型是否依赖于可组合性
不,因为它仅取决于其 LifecycleOwner 并且任何可组合项都不能成为 ViewModel 的 LifecycleOwner,因此您可以将它与任何可组合项一起使用,而不必担心其周期依赖于该可组合项。
这个视图模型是依赖于activity还是fragment生命周期
实际上它取决于它的生命周期所有者,只有当所有者被销毁时才清除自己。 Activity 或 Fragment 都可以是 ViewModel 的 LifecycleOwner。例如:如果 ViewModel 附加到 Activity,那么当活动获得
onDestroy()
时,只有视图模型被销毁,否则视图模型可以维持的所有更改,如 onPause()
、onStop()
等。
这就是为什么视图模型用于维持配置更改,您可以将它与任何 LifecycleOwner 一起使用,它将自行管理其生命周期,直到
onCleared()
被调用。有关更多信息,您可以查看文档:https://developer.android.com/topic/libraries/architecture/viewmodel