AS中添加依赖的
首先在工程根目录的build.gradle中添加一下内容:
然后在应用目录下的build.gradle中添加以下依赖:(刚刚写水平有限,所以先放图,再用文字补上,方便大家copy。不用谢>_<)
//For Lifecycles, LiveData, and ViewModel
compile"android.arch.lifecycle:runtime:1.0.0-alpha1"
compile"android.arch.lifecycle:extensions:1.0.0-alpha1"
annotationProcessor"android.arch.lifecycle:compiler:1.0.0-alpha1"
//For Room
compile"android.arch.persistence.room:runtime:1.0.0-alpha1"
annotationProcessor"android.arch.persistence.room:compiler:1.0.0-alpha1"
要想达到监听生命周期,只要写一个类实现 LifecycleObserver 接口,如Watcher01 ,此时的Watcher01相当于是观察者,activity或者fragment相当于是被观察者,在activity或者fragment里加上Watcher01 watcher01=new Watcher01();getLifecycle().addObserver(watcher01);
之后activity或者fragment的生命周期的变化都会在Watcher01及时响应相应的方法。如图:
我们比较关注的是,在我们的activity或者fragment里我们怎么用。
我个人的理解是只要在activity或者fragment里调用上文的addObserver方法后,我们其实不用再在乎Watcher01 ,我们只会在乎类似这种情况:就是请求数据返回的时候,我们会在 onSuccess 里操作 UI,如果 Activity 已经销毁了,没做检查的话那么就会崩溃。针对这种情况我们只要在绑定数据到UI的方法上加一个判断:if(getLifecycle().getCurrentState()!=Lifecycle.State.DESTROYED)即当前的状态不是DESTROYED就更新UI。
在这里我简单模拟一种状况:在onCreate()里启动一个线程,让其睡眠3秒后更新UI,模拟耗时的操作,再在onDestroy()里将cal这个view置空。如果不加白色箭头的判断,当进入界面后在3秒内快速按返回键回到上一个界面时候,稍后程序会闪退,报NullPointerException异常。加上判断后就可以避免闪退了。
好了,这就是我个人的理解了,只想做个记录。如果能帮到同为开发的你,我很荣幸。