ViewModel 跟 Activity 之间到底是什么关系?

ViewModelProvider通过ViewModelStore和Factory管理ViewModel的创建与存储。Factory负责实例化ViewModel,而ViewModelStore则保存这些实例。activity作为ViewModelStoreOwner,持有ViewModelStore,从而实现了ViewModel与activity的绑定。这种设计允许activity和ViewModel之间的生命周期关联,确保数据在配置变更时得以保留。
部署运行你感兴趣的模型镜像


ViewModelProvider(activity)[YourViewModel::class.java]�我们日常都是如此获得ViewModel的,那你知道ViewModelProvider到底是怎么获得ViewModel的吗?ViewModel又是如何跟activity/fragment之间绑定的?上图整理了相关类之间的关系。

  • ViewModelProvider 是如何对外提供 ViewModel的

ViewModelProvier 中有两个重要成员变量:ViewModelStore 和 Factory。Factory 负责创建 ViewModel,ViewModelStore 负责存储 ViewModel。ViewModleProvier 就是通过这两个成员变量来对外提供 ViewModel

  • ViewModel 是如何跟activity/fragment之间绑定的

activity 直接继承了ViewModelStoreOwner、HasDefaultViewModelProviderFactory 这两个接口,换句话来说acivity本身就持有了ViewModelStore 和 Factory。ViewModelStore中存储 ViewModel 的 hashtagMap 是activity 成员变量的成员变量,就这样 activity 和 ViewModel就绑定到了一起。
总结:

  1. Factory、 ViewModelStore、ViewModelStoreOwner 源码里面的命名规则其实就已经把中间的逻辑关系描述清除了。
  2. 由于只能继承一个父类,但是可以继承多个接口。这里 activity 通过继承 ViewModelStoreOwner 接口,接口中又提供了 getViewModelStore():ViewModelStore 方法,间接让 activity 持有了ViewModelStore。

您可能感兴趣的与本文相关的镜像

Llama Factory

Llama Factory

模型微调
LLama-Factory

LLaMA Factory 是一个简单易用且高效的大型语言模型(Large Language Model)训练与微调平台。通过 LLaMA Factory,可以在无需编写任何代码的前提下,在本地完成上百种预训练模型的微调

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值