android性能优化

作者: 无玄 | 来源:发表于2021-07-14 18:00 被阅读0次

性能指标

安装耗时

pm install命令前后的时间差

启动耗时:冷启动耗时、热启动耗时

adb shell am start -W 包名/启动页xxxActivity

>adb shell am start -W 包名/绝对路径.WelcomeActivity
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=路径.WelcomeActivity }
Status: ok  // 状态
LaunchState: COLD  //COLD(冷启动)/HOT(热启动)
Activity: 路径.WelcomeActivity
ThisTime:971 // 最后一个启动的Activity的启动耗时
TotalTime: 1666  // 应用的启动时间,包括创建进程 + Application初始化 + Activity初始化到界面显示的过程。
WaitTime: 1671 // AMS(ActivityManagerService )启动Activity的总耗时
Complete
崩溃率:Java崩溃、native崩溃

java崩溃:通过系统提供的回调接口进行监控:UncaughtExceptionHandler.uncaughtException
native崩溃:google breakpad

ANR

ANR主要分为三种类型:

  1. KeyDispatchTimeout(5 seconds) --主要类型
    按键或触摸事件在特定时间内无响应
  2. BroadcastTimeout(10 seconds)
    BroadcastReceiver在特定时间内无法处理完成
  3. ServiceTimeout(20 seconds) --小概率类型
    Service在特定的时间内无法处理完成

可通过如下的方式进行监测

  1. ANR发生时,没有java的回调,但是会写进程信息到 /data/anr/traces.txt文件,可以用FileObserver来观测 /data/anr/的写入情况来判断是否发生了ANR。
  2. 参考Android WatchDog机制,起一个单独的线程进行监测。
首屏时间
  1. 代码注入的方式,在关键节点进行埋点,比如Activity启动时长、Fragment启动时长等;
  2. 通过图像识别,监控白屏时间,知乎启动时间录屏自动化测试
接口响应时长

接口请求前后的时间差

帧率(FPS)
  1. Janky frames
    Janky frames标识本地统计的数据中,卡顿的次数及概率。
adb shell dumpsys gfxinfo < 包名 >

打印信息:

Stats since: 133740375229592ns
Total frames rendered: 1833
Janky frames: 114 (6.22%)
50th percentile: 9ms 
90th percentile: 13ms  
95th percentile: 19ms
99th percentile: 65ms
Number Missed Vsync: 20 
Number High input latency: 1624
Number Slow UI thread: 37
Number Slow bitmap uploads: 3
Number Slow issue draw commands: 16
Number Frame deadline missed: 49
HISTOGRAM: 5ms=149 6ms=129 7ms=180 8ms=270 9ms=323 10ms=259 11ms=178 12ms=109 13ms=54 14ms=34 15ms=22 16ms=14 17ms=11 18ms=9 19ms=10 20ms=8 21ms=6 22ms=4 23ms=6
  1. Choreographer.FrameCallback
    Choreographer的FrameCallback接口在每一帧被绘制的时候被调用,根据这样一个原理,可以通过代码注入,监控FrameCallback两次回调之间的时间间隔,时间间隔超过16ms则丢帧

参考资料

Android性能相关--性能指标篇
Android性能优化来龙去脉总结
Android性能相关--经验篇

相关文章

网友评论

    本文标题:android性能优化

    本文链接:https://www.haomeiwen.com/subject/spmypltx.html