Android架构设计模式

我所搭建的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()方法也会被调用。至于具体的实现过程还是自行看看源码吧,毕竟我也是刚接触,理解的也不是很透彻。

上一篇下一篇

猜你喜欢

热点阅读