《Android全埋点解决方案》 —2 $AppViewScreen全埋点方案
第2章
$AppViewScreen全埋点方案
$AppViewScreen事件,即页面浏览事件。在Android系统中,页面浏览其实就是指切换不同的Activity或Fragment(本书暂时只讨论切换Activity的情况)。对于一个 Activity,它的哪个生命周期执行了,代表该页面显示出来了呢?通过对 Activity生命周期的了解可知,其实就是onResume(Activity activity)的回调方法。所以,当一个Activity 执行到onResume(Activity activity)生命周期时,也就代表该页面已经显示出来了,即该页面被浏览了。我们只要自动地在onResume里触发$AppViewScreen事件,即可解决$AppViewScreen事件的全埋点。
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。
- 点赞
- 收藏
- 关注作者
评论(0)