Android Lifecycle组件使用
Android中很多组件都具备生命周期功能,系统框架会在适合时机调用相应的生命周期方法,作为开发者在开发业务时可能需要争对组件的生命周期需要作出相应的处理;比如onDestroy需要释放资源,防止内存泄漏甚至引发应用崩溃;
Android的生命周期Lifecycle就是用来解决该问题,同时可以将业务处理代码从Fragment或Activity相关的生命周期方法中分离,这样写出的代码更有条理性便于代码后期维护
1. 集成
添加Lifecycle轻量级库
implementation "android.arch.lifecycle:runtime:1.1.1"
implementation 'com.android.support:appcompat-v7:28.0.0'
2. 使用
public class HomeActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getLifecycle().addObserver(new HomeObserver());
}
}
public class HomeObserver implements LifecycleObserver {
@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
void onCreate() {
Log.d("dbs", "===onCreate===");
}
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
void onResume() {
Log.d("dbs", "===onResume===");
}
@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
void onDestroy() {
Log.d("dbs", "===onDestory===");
}
}
启动APP,查看控制台输出日志
2020-03-21 21:17:23.850 D/dbs: ===onCreate===
2020-03-21 21:17:23.859 D/dbs: ===onResume===
点击返回
2020-03-21 21:17:27.860 D/dbs: ===onDestory===
大家可以看到使用非常简单,如果需要观察HomeActivity生命周期,只需要将观察者(HomeObserver)添加到Lifecycle中即可;一旦HomeActivity生命周期发生变化,HomeObserver就能被感知到,自动触发相关方法
3. 疑问
HomeObserver是如何感知到HomeActivity生命周期呢?
下篇我将从源码角度进行剖析HomeActivity的生命周期事件是如何转发到HomeObserver中
Android Lifecycle源码解析(一)