Android应用的启动时间

应用的启动速度直接关系到用户体验,如果一个应用启动缓慢导致的黑屏,白屏等问题,直接会导致用户的流失。所以首次启动的速度非常重要,毕竟影响用户对 App 的第一印象。

如何测试一个Android App的启动时间呢?
首先我们要理解三个定义:

冷启动:当启动应用时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用,这个启动方式就是冷启动。通俗的讲,用户打开关闭着的应用的过程。

热启动:当启动应用时,后台已有该应用的进程(例:按back键、home键,应用虽然会退出,但是该应用的进程是依然会保留在后台,可进入任务列表查看),所以在已有进程的情况下,这种启动会从已有的进程中来启动应用,这个方式叫热启动。通俗的讲,就是用户把已经打开的应用,放置到当前屏幕上。

首次启动:首次启动严格来说也是冷启动,之所以把首次启动单独列出来,一般来说,首次启动时间会比非首次启动要久,首次启动会做一些系统初始化工作,如缓存目录的生产,数据库的建立,SharedPreference的初始化,如果存在多 dex 和插件的情况下,首次启动会有一些特殊需要处理的逻辑,而且对启动速度有很大的影响。通俗的讲,就是安装后的第一次打开应用的过程。

好了,理解了一些概念,现在来探讨如何测试了。
一般我们用这个命令来测试启动时间:

adb shell am start -W [PackageName]/[PackageName.MainActivity]

首先,要知道app的启动activity.如下:


adb2.jpg

然后,用这个命令来获取启动时间:


adb.jpg

ThisTime、TotalTime 和 WaitTime。WaitTime 是 startActivityAndWait 这个方法的调用耗时,ThisTime 是指调用过程中最后一个 Activity 启动时间到这个 Activity 的 startActivityAndWait 调用结束。TotalTime 是指调用过程中第一个 Activity 的启动时间到最后一个 Activity 的 startActivityAndWait 结束。如果过程中只有一个 Activity ,则 TotalTime 等于 ThisTime。

如果只关心某个应用自身启动耗时,参考TotalTime;如果关心系统启动应用耗时,参考WaitTime;如果关心应用有界面Activity启动耗时,参考ThisTime。

然后,就可以自由发挥了,写段代码,重复各种启动几次,用图表展现出来。

但是获得这些数据有啥用呢?

根据多数用户体验,性能一般的机子,

  • 冷启动时间控制在2,3,5秒(1秒正常,3秒凑合,5秒快到用户忍受极限了)
  • 热启动时间控制在1,2,3秒(1秒正常,2秒凑合,3秒快到用户忍受极限了)
  • 首次启动时间控制在2,5,8秒(2秒正常,5秒凑合,8秒快到用户忍受极限了)

如果超过这个,就要考虑开bug,让开发优化了。

更多精彩,请关注微信公众号:python爱好部落

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,067评论 25 709
  • 1.什么是Activity?问的不太多,说点有深度的 四大组件之一,一般的,一个用户交互界面对应一个activit...
    JoonyLee阅读 11,031评论 2 51
  • Android Studio JNI流程首先在java代码声明本地方法 用到native关键字 本地方法不用去实现...
    MigrationUK阅读 14,090评论 7 123
  • 脖子很酸。 刚说完这话我就后悔了。我刚从酒吧下班,走过两点的街道,买了一大盒巧克力,躺在出租屋的床上,扭了扭脖子。...
    严好甜阅读 3,177评论 0 2
  • 文|李晓木 常常有人问我,女人生过孩子,是不是生活就以孩子为中心,聊天的话题永远是孩子会笑了,孩子会爬了,孩子会叫...
    李晓木阅读 5,635评论 15 43

友情链接更多精彩内容