跳转到主要内容
PRODUCT DOCUMENTS

快速找到所需文档,高效完成接入与排障

浏览产品文档与友盟 Skill,展开目录并阅读正文。

Android启动分析数据异常问题解决方案

启动分析各指标定义

启动监控用于监控、还原C端用户启动App时的真实感知情况。

一共有三种启动类型:

  • 首次启动:App安装后的第一次启动

  • 冷启动:App进程被"杀死"(包括手动方式、被动系统回收等),再次触发启动的过程

  • 热启动:App进程存活,再次触发启动的过程(包括前后台切换、back退出再次进入等)

其中,首次启动和冷启动会对启动过程中进行启动时间的分解监控,包括初始化时长、构建时长、页面加载时长三个指标,热启动则只监控启动时长,监控指标说明如下:

首次启动或冷启动时长:从Application的attachbaseContext()开始到第一个Activity的onResume()结束;

热启动时长:如果退出时的Activity存在则从恢复该Activity的onRestart()开始到onResume()结束,如果退出时的Activity不存在则从Activity的onCreate()开始到onResume()结束。

问题:当使用APM插件进行自动集成时,部分客户反馈热启动数据丢失,无法监测到。

  1. 首先确认热启动模拟是否正确,只有App进程存活再次触发启动的过程(包括前后台切换、back退出再次进入等)才算为热启动。

  2. 确认热启动异常的Activity,是否进行了白名单的配置,若有多个Activity处于不同包名下,需要将全部包名配置到白名单中。如下所示:

    efs {
     //是否对启动过程进程插桩的开关,如果使用自动集成监控则必须开启,false则不开启启动插件
     enable = true
     //白名单,支持包力度,必须填写,如填写自己应用的包名
     whiteList = [
     "您自己的包名路径"
     ]
    }

  3. 确认白名单中包名下配置的Activity,是否有继承关系,例如App内有BaseActivity,其他Activity部分或者全部继承于BaseActivity。若存在该情况,需要将BaseActivity配置到黑名单中,避免插件重复插桩。

    例如,在项目中有MainActivity继承自BaseActivity,若只配置白名单,则在插桩时会将MainActivity和BaseActivity均插桩。此时,需要将BaseActivity放到黑名单中,保证插桩时仅对衍生类插桩。

    efs {
     enable = true
     whiteList = [
     "com.efs.sdk.demo" //com.efs.sdk.demo包名下同时包含MainActivity和BaseActivity
     ]
     blackList = [
     "com.efs.sdk.demo.BaseActivity"
     ]
    }