Android 全埋点解决方案 (5):$AppViewScreen 全埋点方案 2.1

阅读数:5 2019 年 11 月 30 日 22:55

Android全埋点解决方案(5):$AppViewScreen全埋点方案 2.1

(关键技术 Application.ActivityLifecycleCallbacks)

内容简介
这是一本实战为导向的、翔实的 Android 全埋点技术与解决方案手册,是国内知名大数据公司神策数据在该领域多年实践经验的总结。由神策数据合肥研发中心负责人亲自执笔,他在 Android 领域有近 10 年研发经验,开发和维护着知名的商用开源 Android & iOS 数据埋点 SDK。
本书详细阐述了 Android 全埋点的 8 种解决方案,涵盖各种场景,从 0 到 1 详解技术原理和实现步骤,并且提供完整的源代码,各级研发工程师均可借此实现全埋点数据采集,为市场解开全埋点的神秘面纱。
8 种 Android 全埋点解决方案包括:
AppClick 全埋点方案 1:代理 View.OnClickListener、
AppClick 全埋点方案 2:代理 Window.Callback
AppClick 全埋点方案 3:代理 View.AccessibilityDelegate
AppClick 全埋点方案 4:透明层
AppClick 全埋点方案 5:AspectJ
AppClick 全埋点方案 6:ASM
AppClick 全埋点方案 7:Javassist
AppClick 全埋点方案 8:AST

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。

Android全埋点解决方案(5):$AppViewScreen全埋点方案 2.1

购书地址 https://item.jd.com/12574672.html?dist=jd

评论

发布