Android中ActivityLifecycleCallbacks使用

一、前言:

ActivityLifecycleCallbacks 是用來監(jiān)聽所有 Activity 的生命周期回調(diào)。接口定義如下:

public interface ActivityLifecycleCallbacks {
    void onActivityCreated(Activity activity, Bundle savedInstanceState);
    void onActivityStarted(Activity activity);
    void onActivityResumed(Activity activity);
    void onActivityPaused(Activity activity);
    void onActivityStopped(Activity activity);
    void onActivitySaveInstanceState(Activity activity, Bundle outState);
    void onActivityDestroyed(Activity activity);
}

每一個Activity 生命周期都對應(yīng) ActivityLifecycleCallbacks 接口中的一個方法,比如 onActivityCreated 回調(diào)是在 Activity 的 onCreate 方法中調(diào)用getApplication().dispatchActivityCreated(this, savedInstanceState) 完成對 Activity 生命周期跟蹤監(jiān)聽。

使用場景:
1、應(yīng)用新開進程假重啟處理(低內(nèi)存回收、修改權(quán)限)
2、管理 Activity 頁面棧
3、獲取當(dāng)前 Activity 頁面
4、判斷應(yīng)用前后臺
5、保存恢復(fù)狀態(tài)值 savedInstanceState
6、頁面分析統(tǒng)計埋點

二、Application使用:

1、kotlin代碼

class MyAppliction : Application() {

    override fun onCreate() {
        super.onCreate()
        Log.d("LUO", "MyAppliction===初始化==")
        // AppLifecycleCallback 實現(xiàn) ActivityLifecycleCallbacks 接口方法
        registerActivityLifecycleCallbacks(AppLifecycleCallback())
    }
}

/**
 * 所有回調(diào),每個Activity都會走這個回調(diào)
 */
 class AppLifecycleCallback : Application.ActivityLifecycleCallbacks {
    override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {
        Log.d("LUO", "AppLifecycleCallback===onActivityCreated==${activity}")
    }

    override fun onActivityStarted(activity: Activity) {
        Log.d("LUO", "AppLifecycleCallback===onActivityStarted===${activity}")
    }

    override fun onActivityResumed(activity: Activity) {
        Log.d("LUO", "AppLifecycleCallback===onActivityResumed===${activity}")
    }

    override fun onActivityPaused(activity: Activity) {
        Log.d("LUO", "AppLifecycleCallback===onActivityPaused===${activity}")
    }

    override fun onActivityStopped(activity: Activity) {
        Log.d("LUO", "AppLifecycleCallback===onActivityStopped===${activity}")
    }

    override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) {
        Log.d("LUO", "AppLifecycleCallback===onActivitySaveInstanceState===${activity}")
    }

    override fun onActivityDestroyed(activity: Activity) {
        Log.d("LUO", "AppLifecycleCallback===onActivityDestroyed===${activity}")
    }

}

2、java代碼

public class App extends Application{
   @Override
    public void onCreate() {
        super.onCreate();
        //生命周期監(jiān)聽
        registerActivityLifecycleCallbacks(new AppLifecycleCallback());
    }


 /**
     * 生命周期監(jiān)聽回調(diào)
     */
    class AppLifecycleCallback implements Application.ActivityLifecycleCallbacks {

        @Override
        public void onActivityCreated(@NonNull Activity activity, @Nullable Bundle bundle) {
             Log.d("Application","===onActivityCreated===="+activity);
        }

        @Override
        public void onActivityStarted(@NonNull Activity activity) {
            Log.d("Application","===onActivityStarted===="+activity);
        }

        @Override
        public void onActivityResumed(@NonNull Activity activity) {
            Log.d("Application","===onActivityResumed===="+activity);
        }

        @Override
        public void onActivityPaused(@NonNull Activity activity) {
            Log.d("Application","===onActivityPaused===="+activity);
        }

        @Override
        public void onActivityStopped(@NonNull Activity activity) {
            Log.d("Application","===onActivityStopped===="+activity);
        }

        @Override
        public void onActivitySaveInstanceState(@NonNull Activity activity, @NonNull Bundle bundle) {
            Log.d("Application","===onActivitySaveInstanceState===="+activity);
        }

        @Override
        public void onActivityDestroyed(@NonNull Activity activity) {
            Log.d("Application","===onActivityDestroyed====");
        }
    }


}

三、萬能工具類的使用:

1、萬能工具類jar包引入

   implementation "com.blankj:utilcodex:1.30.6"

2、對傳入的Activity生命周期監(jiān)聽

        //萬能工具類的回調(diào)
        ActivityUtils.addActivityLifecycleCallbacks(this, object : Utils.ActivityLifecycleCallbacks(){
            override fun onActivityCreated(activity: Activity) {
                super.onActivityCreated(activity)
                Log.d("LUO","TwoActivity=========onActivityCreated")
            }
            override fun onActivityResumed(activity: Activity) {
                super.onActivityResumed(activity)
                Log.d("LUO","TwoActivity=========onActivityResumed")
            }
            override fun onActivityDestroyed(activity: Activity) {
                super.onActivityDestroyed(activity)
                //移除這個 回調(diào)
                ActivityUtils.removeActivityLifecycleCallbacks(activity)
                Log.d("LUO","TwoActivity=========onActivityDestroyed")
            }
        })

著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容