关于viewmodel创建

1.ViewModelProviders.of()被弃用了

从Android官网可以看到创建ViewModel的方法ViewModelProviders.of()已经被弃用了,我们需要创建ViewModel,只用使用new ViewModelProvider的方式。那么我们应该如何使用呢?

2.使用new ViewModelProvider方法创建ViewModel

从官方给的文档来看,ViewModelProvider有两个构造方法,如下图

这两个构造方法区别在于: 

(1) 第一个构造方法的第一个参数ViewModelStoreOwner是viewmodel的持有者,在activity中传入this即可,如果在fragment中,传入requireActivity()即可

(2) 第二个构造方法的第一个参数ViewModelStore是viewmodel的保存容器,工厂创建viewmodel之后,将放入这个容器。

两个构造方法的第二个参数是Factory参数,用于创建viewmodel对象。如果我们需要创建的是viewmodel则使用new ViewModelProvider.NewInstanceFactory()即可;如果需要创建的是AndroidViewModel则使用new ViewModelProvider.AndroidViewModelFactory(this.getApplication())。

//1. WordViewModel继承AndroidViewModel

public class WordViewModel extends AndroidViewModel{

      public WordViewModel(@NonNull Application application) {

          super(application);

       }

}

//ViewModel创建方法

WordsViewModel wordsViewModel = new ViewModelProvider(this, new ViewModelProvider.AndroidViewModelFactory(this.getApplication())).get(WordViewModel.class);

//2.WordViewModel继承ViewModel

public class WordViewModel extends ViewModel {}

//ViewModel创建方法

WordsViewModel wordsViewModel = new ViewModelProvider(this, new ViewModelProvider.NewInstanceFactory()).get(WordViewModel.class);

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容