ViewModel是一个提供和管理UI界面数据,并且可感知生命周期的组件。
特点:
1. 不会因为设置变更而被销毁。
2. 可以共享多个Fragment的数据
3. ViewModel + LiveData = 响应式UI
1. 添加依赖
// ViewModel
implementation "androidx.lifecycle:lifecycle-viewmodel:2.2.0"
2. 继承ViewModel抽象类
public class MainActivityViewModel extends ViewModel {
public int count = 0;
}
3. 在Activity的onCreate()方法中获取对应的ViewModel
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mainActivityViewModel = new ViewModelProvider(this).get(MainActivityViewModel.class);
getLifecycle().addObserver(new WorkUtil(mainActivityViewModel));
}
注意
- ViewModel里面不应该有Activity,Fragment或者View的引用。
- ViewModel不可以代替onSaveInstanceState方法。
- 不要使用new()创建ViewModel实例。
如果你需要Application这个Context,你可以继承已经含有Application引用的AndroidViewModel类。
我们应该尽量把UI界面所需的数据保存在ViewModel里面。
网友评论