- Android全埋点解决方案
- 王灼洲
- 327字
- 2023-07-19 17:42:48
2.1 关键技术Application.ActivityLifecycleCallbacks
ActivityLifecycleCallbacks是Application的一个内部接口,是从API 14(即Android 4.0)开始提供的。Application类通过此接口提供了一系列的回调方法,用于让开发者可以对Activity的所有生命周期事件进行集中处理(或称监控)。我们可以通过Application类提供的registerActivityLifecycleCallback(ActivityLifecycleCallbacks callback)方法来注册ActivityLifecycleCallbacks回调。
我们下面先看看Application.ActivityLifecycleCallbacks都提供了哪些回调方法。Application.ActivityLifecycleCallbacks接口定义如下:
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的onResume(Activity activity)生命周期为例,如果我们注册了Activity-LifecycleCallbacks回调,Android系统会先回调ActivityLifecycleCallbacks的onActivity-Resumed(Activity activity)方法,然后再执行Activity本身的onResume函数(请注意这个调用顺序,因为不同的生命周期的执行顺序略有差异)。通过registerActivityLifecycleCallback方法名中的“register”字样可以知道,一个Application是可以注册多个ActivityLifecycleCallbacks回调的,我们通过registerActivityLifecycleCallback方法的内部实现也可以证实这一点。
public void registerActivityLifecycleCallbacks(ActivityLifecycleCallbacks callback) { synchronized (mActivityLifecycleCallbacks) { mActivityLifecycleCallbacks.add(callback); } }
内部定义了一个list用来保存所有已注册的ActivityLifecycleCallbacks。