Android性能优化
按:
App的体积越来越大,App的功能越来越多,面临同一个问题,原有的App可能不适合现在的用户使用。基于“不要过早优化”的原则,在早期快速迭代反馈确定正确的方向之后,是时候做一些优化了。
性能优化,需要在用户的角度来思考。用户理解的“性能”是快:快速打开页面,快速找到我想要的内容,页面的切换流程,等等。
从三个维度来谈性能优化:
1, 技术层面(主动)
1-1 UI的优化应该分为三个层面来谈:
一个是简洁的UI代码
一个是较少的UI层数。
一个是具体view的渲染过程速度
2, 工具层面(被动)
3, 产品层面(主动)
一,基本技术原理篇
1, UI线程减少耗时操作
2, View层级减少(将线性布局转换为相对布局)
3, ViewStub
4, Merge
5, Include
6, Style
二,工具检测篇
1,StrictMode
1-1安卓2.3之后出现
1-2用途
探测UI线程进行的阻塞操作(网络/数据库查询)
1-3输出
Log
1-4链接
http://developer.android.com/reference/android/os/StrictMode.html
2,Systrace
2-1 安卓4.1之后
2-2 用途
2-2-1分析app的性能,通过分析本应用进程和其他系统进程的执行时间。
2-2-2可以很容易分析出你的程序在UI线程的哪些函数占用了过多的时间
2-3 输出
通过分析android内核信息(CPU scheduler, disk activity, and application threads ),输出Html网页
2-4 链接
http://developer.android.com/tools/help/systrace.html
2-5 其他参考资料
http://blog.csdn.net/rogeryi/article/details/8242250
2-6 局限性
必须在linux下运行
3, Traceview
3-1 用途:
分析app具体方法执行所耗费app的cpu,执行时长
3-2 输出
3-2-1 timeline panel 按照方法执行的先后时间顺序排列,宽度代表耗时
3-2-2 profile panel 方法栈关系,及占用cpu,时间的具体值和比例
3-3 链接
http://developer.android.com/tools/debugging/debugging-tracing.html
3-4 其他参考
http://www.open-open.com/lib/view/open1370251009945.html
4, dumpsys gfxinfo
4-1查看掉帧的情况,一般情况下1秒钟是60帧会保证流程,即一帧的渲染时间不超过16ms
4-2 reference:http://www.tuicool.com/articles/ZzmYFf(重要)
5, hierarchy viewer
从整个View的图中,会有三个点,代表onMeasure onLayout onDraw效率,这样就可以看到拖累 加载速度的view,并且知道在View的那个步骤拖累了效率。
参看:http://developer.android.com/tools/debugging/debugging-ui.html
三,交互产品篇
1, 进度条的显示
2, 欢迎界面
3, 重构导航
3-1 从Tab到Drawser的转换
4, 插件化
5, 功能定制化(eg,微信选择功能)
四,参考文档
1, http://www.yixieshi.com/it/16683.html
2, http://developer.android.com/tools/debugging/debugging-ui.html
3, http://www.oschina.net/question/195301_32202
4, http://blog.venmo.com/hf2t3h4x98p5e13z82pl8j66ngcmry/performance-tuning-on-android
5, http://www.uisdc.com/5-ways-to-slim-app
五,未完待续,暂时总结这么多。