Android Architecture Component 之 Lifecycle 在activity/fragment里的具体应用

AS中添加依赖的

首先在工程根目录的build.gradle中添加一下内容:


allprojects { repositories { jcenter() maven { url'https://maven.google.com'}//添加此行}}

然后在应用目录下的build.gradle中添加以下依赖:(刚刚写水平有限,所以先放图,再用文字补上,方便大家copy。不用谢>_<)


Android Architecture Component 之 Lifecycle 在activity/fragment里的具体应用_第1张图片

//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);


Android Architecture Component 之 Lifecycle 在activity/fragment里的具体应用_第2张图片
addObserver方法

之后activity或者fragment的生命周期的变化都会在Watcher01及时响应相应的方法。如图:

Android Architecture Component 之 Lifecycle 在activity/fragment里的具体应用_第3张图片

我们比较关注的是,在我们的activity或者fragment里我们怎么用。

我个人的理解是只要在activity或者fragment里调用上文的addObserver方法后,我们其实不用再在乎Watcher01 ,我们只会在乎类似这种情况:就是请求数据返回的时候,我们会在 onSuccess 里操作 UI,如果 Activity 已经销毁了,没做检查的话那么就会崩溃。针对这种情况我们只要在绑定数据到UI的方法上加一个判断:if(getLifecycle().getCurrentState()!=Lifecycle.State.DESTROYED)即当前的状态不是DESTROYED就更新UI。


Android Architecture Component 之 Lifecycle 在activity/fragment里的具体应用_第4张图片

在这里我简单模拟一种状况:在onCreate()里启动一个线程,让其睡眠3秒后更新UI,模拟耗时的操作,再在onDestroy()里将cal这个view置空。如果不加白色箭头的判断,当进入界面后在3秒内快速按返回键回到上一个界面时候,稍后程序会闪退,报NullPointerException异常。加上判断后就可以避免闪退了。

好了,这就是我个人的理解了,只想做个记录。如果能帮到同为开发的你,我很荣幸。

你可能感兴趣的:(Android Architecture Component 之 Lifecycle 在activity/fragment里的具体应用)