Android 全埋点解决方案 (10):AppStartAppEnd 全埋点方案 3

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

Android全埋点解决方案(10):$AppStart、$AppEnd全埋点方案 3

(AppStartAppEnd 全埋点方案)

内容简介
这是一本实战为导向的、翔实的 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

对于 AppStartAppEnd 事件而言,归根结底就是判断当前应用程序是处于前台还是处于后台。而 Android 系统本身并没有给应用程序提供相关的接口来判断这些状态,所以我们只能借助其他方式来间接判断。

目前,业界也有很多种方案用来判断一个应用程序是处于前台还是后台,以 Github 上的一个开源项目为例: https://github.com/wenmingvs/AndroidProcess

这个开源项目提供了 6 种方案。这 6 种方案的综合对比可以参考表 3-1。

表 3-1 6 种方案的对比
方案 原理 需要权限 特点
方案一 RunningTask 从 Android 5.0 开始,该方法被废弃了
方案二 RunningProcess
方案三 ActivityLifecycleCallbacks 简单、代码量少
方案四 UsageStatsManager 需要用户手动授予权限
方案五 无障碍服务 需要用户手动授予权限
方案六 读取 /proc 目录下的信息 效率比较低

以上 6 种方案,各有优缺点,但都无法解决我们最关心的几个问题:

  • 应用程序如果有多个进程该如何判断?
  • 应用程序如果发生崩溃了该如何判断?
  • 应用程序如果被强杀了又该如何判断?

Android全埋点解决方案(10):$AppStart、$AppEnd全埋点方案 3

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

评论

发布