2017/5/18 Google IO
Android Architecture Components: 一个新的库集合,可以方便的管理UI组件生命周期和处理数据持久性。帮助您设计健壮的、可测试的和可维护的应用程序。
下文中Fragment、Activity 等组件自身的生命周期直用 “生命周期” 一词,而由 Lifecycle 框架提供的生命周期则称为 “lifecycle”
个人觉得lifecycle简单的理解就是:在组件或工具类中自动接受Event来处理有关”生命周期”的逻辑。实现组件与activity的解耦。
在工程的build.gradle中添加google Maven仓库
maven { url "https://maven.google.com" }
在module的build.gradle中添加如下引用:
//Lifecycle
implementation "android.arch.lifecycle:runtime:1.0.3"
annotationProcessor "android.arch.lifecycle:compiler:1.0.0"
实现自己的组件类,需要实现LifecycleObserver,以下只是一个演示类。
public class MyObserver implements LifecycleObserver {
@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
public void ON_CREATE() {
System.out.println("@@@@@@@@MyObserver:ON_CREATE");
}
@OnLifecycleEvent(Lifecycle.Event.ON_START)
public void ON_START() {
System.out.println("@@@@@@@@MyObserver:ON_START");
}
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
public void ON_RESUME() {
System.out.println("@@@@@@@@MyObserver:ON_RESUME");
}
@OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
public void ON_PAUSE() {
System.out.println("@@@@@@@@MyObserver:ON_PAUSE");
}
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
public void ON_STOP() {
System.out.println("@@@@@@@@MyObserver:ON_STOP");
}
@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
public void ON_DESTROY() {
System.out.println("@@@@@@@@MyObserver:ON_DESTROY");
}
}
然后在你的activity中添加声明并添加监听即可。需要注意的是,必须在onCreate方法中调用addObserver方法。
.
.
.
MyObserver myObserver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
myObserver = new MyObserver();
getLifecycle().addObserver(myObserver);
}
.
.
.
进阶用法:
可以在初始化MyObserver的时候将lifecycle传入,在MyObserver中进行操作时再次确认宿主的”生命周期”状态。例如宿主是Fragment,如果它的Activity处于Saved状态,此时调用回调可能引起崩溃。
if (lifecycle.getCurrentState().isAtLeast(STARTED)) {
//do something
}
getCurrentState()和生命周期对应关系可参考下图: