gpt4 book ai didi

android - 创建我自己的 ViewModelStore 来控制 ViewModel 生命周期

转载 作者:行者123 更新时间:2023-11-29 02:22:02 25 4
gpt4 key购买 nike

在 google 示例中指出,要在 fragment 之间进行通信,您可以使用作用域为 ActivityViewModel。这种方法的问题在于,ViewModel 将持续到 Activity 被销毁。

在单个 Activity 应用程序中,这意味着 Activity 将散布着可能不再需要的 ViewModel。如果这些 ViewModel 没有被正确清除,您也会遇到状态问题。

所以我看看如何改变 ViewModel 的生命周期,这样我就不必绑定(bind)到 Activity 生命周期,而是比生命周期更长 fragment 。这对于在屏幕流过程中满足要求的多步/事务性屏幕流非常有用。

所以基本上,我希望 ViewModel 的范围小于 Activity 但大于 fragment 。

为了实现这一点,我创建了自己的 ViewModelStore 并在整个配置中持久化它,就像 FragmentActivity 持久化它自己的 ViewModelStore 一样。然后在初始化我将使用的 View 模型时,

ViewModelProvider(myCustomViewModelStore, myFactory).get(SomeViewModelClass::class.java)

由于 ViewModel 不在我的自定义 ViewModelStore 范围内,我可以轻松调用 viewModelStore.clear() 来控制 View 模型

我想知道这是否是个好主意,是否有人在使用相同的想法。

提前致谢!

最佳答案

截至Navigation Component 2.1.0-aplha02 , ViewModel 现在可以通过 Navigation Component 导航图限定事务流。

关于android - 创建我自己的 ViewModelStore 来控制 ViewModel 生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54937263/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com