Android - ActivityLifecycleCallbacks应用的生命周期集中管理

官方地址: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()
                );
            }
        });
    }
}

猜你喜欢

转载自blog.csdn.net/m0_59482482/article/details/129552564