一个ViewModel,多个Activity
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个ViewModel,多个Activity相关的知识,希望对你有一定的参考价值。
参考技术A 当定义了一个ViewModel类,有多个Activity中通过ViewModelProvider创建了这个ViewModel实例,那么这些实例的值是独立的吗?1.新建ViewMode的子类TestViewModel
2.ActivityA的oncreate中实例化TestViewModel对象,并设置值为100,打印log:
3.ActivityB的oncreate中同样实例化TestViewModel对象,打印time值;
A中启动B,运行结果
A中设置了100,到B中就回到了0,所以ViewModel和其他普通类一样,每个Activity可以持有一个独立的ViewModel对象;
不知道我这个说法是否完全正确,目前看现象是这样;
至于原理:等我探讨源码之后,再来给出分析过程;
ViewModel组件
ViewModel
1.数据持久化、
activity销毁重建 传统使用 onSaveInstanceState,但只适合少量的可以被序列化的数据 (可存储的空间不大)
由于ViewModel的生命周期是贯穿整个Activity的生命周期的,包括activity因旋转造成的重新创建activity,直到activity真正意义上销毁才会结束
2.异步回调问题
通常:app需要频繁异步请求数据:如:接口请求服务器数据。这些回调一般耗时,当请求的回调未完成,然而activity被销毁了,
就会导致内存泄漏。可以利用ViewModel处理数据回调。
3.分担UI controller
分离出数据操作的职责
4.
以上是关于一个ViewModel,多个Activity的主要内容,如果未能解决你的问题,请参考以下文章
Catel:具有一个View的多个ViewModel。可能吗?
如何在 WPF 中使用多个 ViewModel 并通过一个 MainViewModel 绑定它们?