我所搭建的MVVM设计模式的Android框架(四)
2020-06-07 本文已影响0人
欧西里
之前把数据绑定和网络访问介绍了一下,这篇开始就是正式介绍MVVM的搭建过程了。
一、MVVM之ViewModel
之前的第二篇文章已经简单的把View和ViewModel展现出一个雏形了,AClass就起了ViewModel的作用,只是没有考虑Activity的生命周期,试想,如果Activity已经finish了,这个时候AClass中的属性变了会怎样?
所以现在把AClass改一下:
public class AClass extends ViewModel implements LifecycleObserver {
public ObservableField<String> text = new ObservableField<>("啦啦啦");
public View.OnClickListener click = v -> {
text.set("");
};
public ObservableInt visibility = new ObservableInt(View.VISIBLE);
@OnLifecycleEvent(Lifecycle.Event.ON_ANY)
protected void onAny(LifecycleOwner owner, Lifecycle.Event event) {
}
@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
protected void onCreate() {
}
@OnLifecycleEvent(Lifecycle.Event.ON_START)
protected void onStart() {
}
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
protected void onResume() {
}
@OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
protected void onPause() {
}
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
protected void onStop() {
}
@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
protected void onDestroy() {
}
}
这样让AClass继承ViewModel类之后,当DemoActivity销毁的时候会调用ViewModel的onCleared()方法,这样问题就解决了。而LifecycleObserver是为了让ViewModel拥有Activity的生命周期感知的,也就是说当Activity触发了onResume()方法时,ViewModel的onResume()方法也会被调用。至于具体的实现过程还是自行看看源码吧,毕竟我也是刚接触,理解的也不是很透彻。