ActivityLifecycleCallbacks是什么?
- Application通过此接口提供了一套回调方法,用于让开发者对Activity的生命周期事件进行集中处理。
为什么用ActivityLifecycleCallbacks?
- 以往若需监测Activity的生命周期事件代码,你可能是这样做的,重写每一个Acivity的onResume(),然后作统计和处理:
@Override
protected void onResume() {
super.onResume();
//TODO 处理和统计代码
Log.v(TAG, "onResume");
}
- ActivityLifecycleCallbacks接口回调可以简化这一繁琐过程,在一个类中作统一处理
ActivityLifecycleCallbacks怎么用?
- android.app.Application.ActivityLifecycleCallbacks
- 要求API 14+ (Android 4.0+)
- 继承Application
- 重写Application的onCreate()方法,或在Application的无参构造方法内,调用Application.registerActivityLifecycleCallbacks()方法,并实现ActivityLifecycleCallbacks接口
public void onCreate() {
super.onCreate();
this.registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
@Override
public void onActivityStopped(Activity activity) {
Logger.v(activity, "onActivityStopped");
}
@Override
public void onActivityStarted(Activity activity) {
Logger.v(activity, "onActivityStarted");
}
@Override
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
Logger.v(activity, "onActivitySaveInstanceState");
}
@Override
public void onActivityResumed(Activity activity) {
Logger.v(activity, "onActivityResumed");
}
@Override
public void onActivityPaused(Activity activity) {
Logger.v(activity, "onActivityPaused");
}
@Override
public void onActivityDestroyed(Activity activity) {
Logger.v(activity, "onActivityDestroyed");
}
@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
Logger.v(activity, "onActivityCreated");
}
});
};
ActivityLifecycleCallbacks的拓展用法
-
本次初探仅尝试使用Log日志工具作简要测试,如需满足较复杂的统计或调试需求时,此法可能会大大减少插入代码量,提高效率
-
在Fragment也可以提供类似方法的开源库 https://github.com/soarcn/AndroidLifecyle