ViewModel 是Android 架构组件中负责管理UI相关数据与逻辑的,它的功能定义与MVP架构中的Persenter十分相似,配合其他组件使用增加许多方便开发的功能。
基本使用
定义一个ViewModel只需要继承ViewModel
抽象类即可:
public class MainViewModel extends ViewModel {
}
然后我们就可以在activity/fragment中实例化它:
MainViewModel viewModel = ViewModelProviders.of(this).get(MainViewModel.class);
注意:如果想要正常使用ViewModel的全部功能,不能直接new
出ViewModel的实例,而是使用ViewModelProvider
类创建,上面的ViewModelProviders
其实就是对ViewModelProvider
的包装类。
正是因为通过ViewModelProvider
创建ViewModel的方式,ViewModel才具备了一些比较方便实用的功能。
生命周期
因为创建ViewModel时传入了activity/fragment对象实例(ViewModelProviders.of(this)
),所以ViewModel可以感知宿主的生命周期。