APP启动性能

tech2024-01-14  70

启动方式3种

热启动

Andriod:当启动应用时,后台已有该应用的进程(例:按back键、home键,应用虽然会退出,但是该应用的进程是依然会保留在后台,可进入任务列表查看),所以在已有进程的情况下,这种启动会从已有的进程中来启动应用,也就是直接从进程中启动,不需要重新创建Application,这个方式叫热启动。

IOS:按下home键的时候,iOS APP还存存在一段时间,这时点击APP马上就能恢复到原状态,这种启动我们称为热启动。

冷启动

Andriod:当启动应用时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用,这个启动方式就是冷启动,也就是先实例化Application。

IOS:App被kill掉以后一切从头开始启动的过程

温启动

按下Home键,之后打开APP【介于冷启动与热启动之间】

测量启动时间3种方法

adb命令 #获取activity名字 adb logcat | grep Displayed adb shell am start -W packageName(包名)/ActivityName(活动名)(绝对路径,首个Activity) adb shell am start -W (包名)/(活动名)

应用第一次启动也就是我们常说的冷启动,这时候你的应用程序的进程是没有创建的. 这也是大部分应用的使用场景.用户在桌面上点击你应用的 icon 之后,首先要创建进程,然后才启动 MainActivity.这时候adbshell am start -w packagename/MainActivity 返回的结果,就是标准的应用程序的启动时间。注意Android 5.0 之前的手机是没有WaitTime这个值的。 关于ThisTime/TotalTime/WaitTime的区别,下面是其解释。WaitTime=endTime-startTime

1.startTime记录的刚准备调用startActivityAndWait()的时间点 2.endTime记录的是startActivityAndWait()函数调用返回的时间点 3.WaitTime = startActivityAndWait()调用耗时。WaitTime 就是总的耗时,包括前一个应用Activity pause 的时间和新应用启动的时间 4.ThisTime 表示一连串启动Activity 的最后一个 Activity 的启动耗时; 5.TotalTime表示新应用启动的耗时,包括新进程的启动和 Activity 的启动,但不包括前一个应用Activity pause 的耗时。也就是说,开发者一般只要关心 TotalTime 即可,这个时间才是自己应用真正启动的耗时。

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

录屏拆帧 使用FFmpeg Builds工具:https://ffmpeg.zeranoe.com/builds/ 使用教程:https://blog.csdn.net/weixin_43291944/article/details/97892287 使用命令:https://www.jianshu.com/p/91727ab25227

开发埋点

启动APP可能会出现的问题

启动时间过长(参考时间:热启动1s、冷启动1.5s【最大值】)启动过程中出现白屏
最新回复(0)