启动时间
启动时间一般分为两种:冷启动/热启动
从功能上说
冷启动:进程首次创建并加载资源(首次安装启动app,强制停止再启动app)
热启动:app进程未完全被杀死,重新唤醒app(home键退出,返回键退出)
从系统上说
冷启动:在我们点击启动app的时候,安卓会创建出一个新的进程分配给该应用,然后会创建application,然后才是启动Activity
热启动:一个app只会创建一个application,所以进程没被彻底干掉之前,热启动的只有Activity
热启动快于冷启动```因为少了很多步骤嘛~
获取启动时间:adb shell am start -W package/Activity
此方法可以返回如下数据(时间单位毫秒.豌豆荚冷启动,接近3S```):
经过求教开发们,得之以上三个Time的区别看丑图:
TotalTime:创建进程到启动最后一个Activity的显示时间(黄线+绿线)
WaitTime:totaltime+系统的一些耗时,所以这个永远是最长的(红+黄+绿)
ThisTime:通常和Totaltime一样,但是当启动Activity不止一个的时候,它记录最后一个Activity的时间(绿线)
黄线:为啥有这么一个无界面的Activity呢?具开发描述,有时候它们会创建一个无界面的Activity来初始化一些数据吧啦吧啦(据说知乎就有)
所以,我们一般关注TotalTime就可以了
相关命令
强制停止运行:adb shell am force-stop package
模拟返回键:adb shell input keyevent 3
logcat:adb logcat | find "ActivityManager"
logcat能够抓到一个ActivityManager的Display,也是启动时间,暂不知道是Totaltime还是Thistime,我猜是Totaltime
数据应用
我们拿到比对数据后,可以先同竞品进行数据比对,然后和自己往期版本进行比对.
如果发现某场景数据异常,那么首先要沏茶一壶,再找个舒服的凳子,然后来到程序猿旁边,最后心平气静的问他你在这块代码里都干啥了?
-----华丽的吐槽线-----
((╯‵□′)╯︵┻━┻ 鬼知道程序猿们会写出什么BUG)