首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ViewModel 和 ViewModelProvider.Factory:ViewModel 的创建者

朋友们好,今天我向大家介绍下 ViewModel 中如何使用 ViewModelProvider.Factory. ---- 现在开始 所以,我们首要问题是:什么是 ViewModelProvider.Factory...所以,当我们在构造方法添加参数时, ViewModelProvider.Factory 的内部无法实例化 ViewModel 对象,因为 ViewModelProvider.Factory 调用主构造方法创建...如果你想在构造方法中添加参数,你需要编写自己的 ViewModelProvider 来创建 ViewModel 实例。 什么是 ViewModelProvider.Factory?...所以,为什么我们需要 ViewModelProvider.Factory ?...什么时候不应该使用 ViewModelProvider.Factory 如果你的 ViewModel 没有依赖项,这时你就不需要去自己创建 ViewModelProvider.Factory。

1.7K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    浅谈ViewModel

    ; 通过ViewModelProvider和自定义ViewModel类获取自定义ViewModel对象; 从自定义ViewModel对象获取数据对象,进行需要的读写操作。...ViewModel同时规避了传统方法的缺点: bind同一个Activity的Fragments均可以通过ViewModelProvider获取共同的数据对象,无需主动进行数据传递; 脱离Intent、...的创建; 第一部分的职责是构建 / 查找HolderFragment,对构建过程中的异常做保护,最后返回ViewModelProvider。...HolderFragment和ViewModelProvider共同持有的ViewModelStore将成为第二部分的核心; (第二部分:获取ViewModel) 调用ViewModelProvider.get...这也解释了创建ViewModelProvider时为什么需要HolderFragment配合,HolderFragment掌控了ViewModel的生命周期。

    2.7K90

    Android 面试题:为什么 Activity 都重建了 ViewModel 还存在?—— Jetpack 系列(3)

    完成的: 方法 1: ViewModelProvider 是创建 ViewModel 的工具类: 示例程序 // 不带工厂的创建方式 val vm = ViewModelProvider(this)....ViewModel 实现原理分析 2.1 ViewModel 的创建过程 上一节提到,3 种创建 ViewModel 实例的方法最终都是通过 ViewModelProvider 完成的。...ViewModelProvider 可以理解为创建 ViewModel 的工具类,它需要 2 个参数: 参数 1 ViewModelStoreOwner: 它对应于 Activity / Fragment...创建 ViewModelProvider 工具类后,你将通过 get() 方法来创建 ViewModel 的实例。...ViewModelStore mViewModelStore; // 默认使用 NewInstanceFactory 反射创建 ViewModel public ViewModelProvider(

    1.2K20

    Android Jetpack系列之 ViewModel

    ViewModelProviders.of(this).get(Main3ActivityViewModel.class); 但是这个方法已经过时了,替代方法是 main3ActivityViewModel = new ViewModelProvider...你可能会说,我们直接new一个传过去不就行了吗,请记住这是万万不行的,因为如果我们使用直接实例化来创建ViewModel,那么ViewModel的生命周期就受Activity的影响了,所以为什么我们只能通过ViewModelProvider...我们需要借助ViewModelProvider.Factory来实现传参,新建Main3ActivityViewModelFactor继承自 ViewModelProvider.Factory,重写其onCreate...方法,如下所示: public class Main3ActivityViewModelFactory implements ViewModelProvider.Factory { @NonNull...return (T) new Main3ActivityViewModel(count); } 在Activity中获取实例的时候 采用如下方法 main3ActivityViewModel = new ViewModelProvider

    84520

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券