一镀琉、前言:
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);
}
每一個(gè)Activity 生命周期都對(duì)應(yīng) ActivityLifecycleCallbacks 接口中的一個(gè)方法浆竭,比如 onActivityCreated 回調(diào)是在 Activity 的 onCreate 方法中調(diào)用getApplication().dispatchActivityCreated(this, savedInstanceState) 完成對(duì) Activity 生命周期跟蹤監(jiān)聽挪哄。
使用場(chǎng)景:
1吧秕、應(yīng)用新開進(jìn)程假重啟處理(低內(nèi)存回收、修改權(quán)限)
2迹炼、管理 Activity 頁面棧
3砸彬、獲取當(dāng)前 Activity 頁面
4、判斷應(yīng)用前后臺(tái)
5斯入、保存恢復(fù)狀態(tài)值 savedInstanceState
6砂碉、頁面分析統(tǒng)計(jì)埋點(diǎn)
二、Application使用:
1刻两、kotlin代碼
class MyAppliction : Application() {
override fun onCreate() {
super.onCreate()
Log.d("LUO", "MyAppliction===初始化==")
// AppLifecycleCallback 實(shí)現(xiàn) ActivityLifecycleCallbacks 接口方法
registerActivityLifecycleCallbacks(AppLifecycleCallback())
}
}
/**
* 所有回調(diào)增蹭,每個(gè)Activity都會(huì)走這個(gè)回調(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、對(duì)傳入的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)
//移除這個(gè) 回調(diào)
ActivityUtils.removeActivityLifecycleCallbacks(activity)
Log.d("LUO","TwoActivity=========onActivityDestroyed")
}
})
著作權(quán)歸作者所有户誓。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán)饼灿,非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。