美文网首页
Android中ActivityLifecycleCallbac

Android中ActivityLifecycleCallbac

作者: 因为我的心 | 来源:发表于2021-08-14 14:32 被阅读0次

一、前言:

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")
            }
        })

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

相关文章

网友评论

      本文标题:Android中ActivityLifecycleCallbac

      本文链接:https://www.haomeiwen.com/subject/tdfebltx.html