一、前言:
ActivityLifecycleCallbacks 是用来监听所有 Activity 的生命周期回调。接口定义如下:
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 生命周期都对应 ActivityLifecycleCallbacks 接口中的一个方法,比如 onActivityCreated 回调是在 Activity 的 onCreate 方法中调用getApplication().dispatchActivityCreated(this, savedInstanceState) 完成对 Activity 生命周期跟踪监听。
使用场景:
1、应用新开进程假重启处理(低内存回收、修改权限)
2、管理 Activity 页面栈
3、获取当前 Activity 页面
4、判断应用前后台
5、保存恢复状态值 savedInstanceState
6、页面分析统计埋点
二、Application使用:
1、kotlin代码
class MyAppliction : Application() {
override fun onCreate() {
super.onCreate()
Log.d("LUO", "MyAppliction===初始化==")
// AppLifecycleCallback 实现 ActivityLifecycleCallbacks 接口方法
registerActivityLifecycleCallbacks(AppLifecycleCallback())
}
}
/**
* 所有回调,每个Activity都会走这个回调
*/
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();
//生命周期监听
registerActivityLifecycleCallbacks(new AppLifecycleCallback());
}
/**
* 生命周期监听回调
*/
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生命周期监听
//万能工具类的回调
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)
//移除这个 回调
ActivityUtils.removeActivityLifecycleCallbacks(activity)
Log.d("LUO","TwoActivity=========onActivityDestroyed")
}
})
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
网友评论