美文网首页
关于viewmodel创建

关于viewmodel创建

作者: Jack_Ou | 来源:发表于2020-08-31 17:26 被阅读0次

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);

相关文章

网友评论

      本文标题:关于viewmodel创建

      本文链接:https://www.haomeiwen.com/subject/kofpsktx.html