Android app启动节点和上报启动时间

app启动的关键节点

经常利用content provider 和Androidx里的 startup库来对库进行初始化操作,那么app启动关键方法的执行顺序是什么样的呢? 怎么样控制我的库的启动顺序?

精髓在这张图里:

image-20220427201057606

回答上面的问题: 怎么样控制我的库的启动顺序?

推荐用contentprovider,设置initOrder.

不推荐用startup,因为它只能在dependices()回调里通过依赖来控制,是强依赖,不够灵活

image-20220427202324777

启动时间怎么算

方案1: 参考firebase:

从第一个contentProvider的attachInfo,到第一个页面的onReusme:

app-start-foreground-background-traces

App start trace
This trace measures the time between when the user opens the app and when the app is responsive. In the console, the trace's name is _app_start. The collected metric for this trace is "duration".
​
Starts when the app's FirebasePerfProvider ContentProvider completes its onCreate method.
​
Stops when the first activity's onResume() method is called.
​
Note that if the app was not cold-started by an activity (for example, by a service or broadcast receiver), no trace is generated. 

看一下FirebasePerfProvider的配置:

initOrder=“101”,基本是最大的. 项目里其他的Provider都没有怎么配置initOrder

 <provider
            android:name="com.google.firebase.perf.provider.FirebasePerfProvider"
            android:authorities="${applicationId}.firebaseperfprovider"
            android:exported="false"
            android:initOrder="101" /> 

可以自己搞个类似的trace打印/上报一下

image-20220427201630165

<provider
            android:name="com.xxx.logs.AppStartMeasurer"
            android:authorities="${applicationId}.AppStartMeasurer"
            android:exported="false"
            android:initOrder="102" /> 

然后就可以看logcat的日志输出+ trace平台的统计了

方案2 : ams

adb 命令:

adb shell am start -W 包名/入口activity全类名 

在控制台会输出日志:

image-20220427202057491

这里的时间会比方案1统计到的时间小一些

文末

我总结了一些Android核心知识点,以及一些最新的大厂面试题、知识脑图和视频资料解析。

需要的小伙伴直接点击文末小卡片免费领取哦,以后的路也希望我们能一起走下去。(谢谢大家一直以来的支持,需要的自己领取)

**Android学习PDF+架构视频+面试文档+源码笔记**

部分资料一览:

  • 330页PDF Android学习核心笔记(内含8大板块)

  • Android学习的系统对应视频

  • Android进阶的系统对应学习资料

  • Android BAT大厂面试题(有解析)

领取地址:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值