Arc*_*nes 5 android android-viewmodel android-architecture-components
谷歌示例中指出,要在片段之间进行通信,您可以ViewModel使用Activity. 这种方法的问题在于,它将ViewModel持续到被Activity摧毁为止。
在单个Activity应用程序中,这意味着 Activity 将充斥着ViewModel可能不再需要的 s。ViewModel如果这些状态没有被正确清除,你也会遇到状态问题。
因此,我研究了如何改变 的生命周期,ViewModel这样我就不必受Activity生命周期的束缚,但可以比 的生命周期更长Fragment。这对于屏幕的多步骤/事务流非常有用,其中在屏幕流过程中满足了需求。
所以基本上,我希望 ViewModel 的范围小于活动但比片段长。
为了实现这一目标,我创建了自己的ViewModelStore并在配置中持久化它,就像FragmentActivity持久化它自己的ViewModelStore. 然后在初始化视图模型时我将使用,
ViewModelProvider(myCustomViewModelStore, myFactory).get(SomeViewModelClass::class.java)
由于ViewModel的范围不属于我的自定义范围ViewModelStore,因此我可以轻松调用viewModelStore.clear()来控制 的生命周期ViewModel。
我想知道这是否是一个好主意以及是否有人使用相同的想法。
提前致谢!
| 归档时间: |
|
| 查看次数: |
1174 次 |
| 最近记录: |