官方地址:https://developer.android.com/reference/android/app/Application.ActivityLifecycleCallbacks
简介
Android API 14之后的Application类中,为我们提供了一个应用生命周期回调的注册方法,用来对应用的生命周期进行集中管理,这个接口叫registerActivityLifecycleCallbacks,可以通过它注册自己的ActivityLifeCycleCallback,每一个Activity的生命周期都会回调到这里的对应方法。
有了ActivityLifeCycleCallback接口,我们就可以完成之前我们想做的类似限制制定Activity个数等相关需求,因为所有Activity的生命周期都会在这里回调,我们可以根据条件随心处理。
使用ActivityLifecycleCallbacks我们可以完成类似如下的功能:
1. 限制指定的Activity的数量
2. 控制在特定情况下只会有一个Activity被打开
3. 判断App前后台状态
//Application.ActivityLifecycleCallbacks是Application中的一个接口,使用起来也很简单,只需要调用registerActivityLifecycleCallbacks方法即可完成注册。Application.ActivityLifecycleCallbacks中对应的监听的生命周期方法会在Activity中的生命方法调用父类的方法之后被触发。
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
inivV();
}
private void inivV() {
this.registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
@Override
public void onActivityCreated(@NonNull Activity activity, @Nullable Bundle bundle) {
Log.e(
"Lifecycle", activity.getLocalClassName() + " was Created" + "activity==null "
+ (activity == null) + " activity.isFinishing() " + (activity.isFinishing()) + " " +
" activity.isDestroyed() " + activity.isDestroyed()
);
}
@Override
public void onActivityStarted(@NonNull Activity activity) {
Log.e(
"Lifecycle", activity.getLocalClassName() + " was Created" + "activity==null "
+ (activity == null) + " activity.isFinishing() " + (activity.isFinishing()) + " " +
" activity.isDestroyed() " + activity.isDestroyed()
);
}
@Override
public void onActivityResumed(@NonNull Activity activity) {
Log.e(
"Lifecycle", activity.getLocalClassName() + " was Created" + "activity==null "
+ (activity == null) + " activity.isFinishing() " + (activity.isFinishing()) + " " +
" activity.isDestroyed() " + activity.isDestroyed()
);
}
@Override
public void onActivityPaused(@NonNull Activity activity) {
Log.e(
"Lifecycle", activity.getLocalClassName() + " was Created" + "activity==null "
+ (activity == null) + " activity.isFinishing() " + (activity.isFinishing()) + " " +
" activity.isDestroyed() " + activity.isDestroyed()
);
}
@Override
public void onActivityStopped(@NonNull Activity activity) {
Log.e(
"Lifecycle", activity.getLocalClassName() + " was Created" + "activity==null "
+ (activity == null) + " activity.isFinishing() " + (activity.isFinishing()) + " " +
" activity.isDestroyed() " + activity.isDestroyed()
);
}
@Override
public void onActivitySaveInstanceState(@NonNull Activity activity, @NonNull Bundle bundle) {
}
@Override
public void onActivityDestroyed(@NonNull Activity activity) {
Log.e(
"Lifecycle", activity.getLocalClassName() + " was Created" + "activity==null "
+ (activity == null) + " activity.isFinishing() " + (activity.isFinishing()) + " " +
" activity.isDestroyed() " + activity.isDestroyed()
);
}
});
}
}