Android - ActivityLifecycleCallbacks アプリケーションのライフサイクルの一元管理

公式アドレス: https://developer.android.com/reference/android/app/Application.ActivityLifecycleCallbacks

 序章

 Android API 14 以降の Application クラスでは、アプリケーション ライフ サイクルを一元管理するためのアプリケーション ライフ サイクル コールバックの登録メソッドが提供されています。このインターフェイスは registerActivityLifecycleCallbacks と呼ばれ、これを介して独自の ActivityLifeCycleCallback を登録でき、各アクティビティのライフ サイクルはここで対応するメソッドをコールバックします。

ActivityLifeCycleCallback インターフェースを使用すると、すべてのアクティビティのライフサイクルがここでコールバックされ、条件に従って処理できるため、以前に実行したかったアクティビティの数を制限するなどの関連要件を完了できます。

ActivityLifecycleCallbacks を使用すると、次のような関数を完成させることができます。

1. 指定されたアクティビティの数を制限する

2. 特定の状況下で 1 つのアクティビティのみを開くように制御する

3. アプリの表と裏のステータスを確認する

//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