和你一起终身学习,这里是程序员Android
经典好文推荐,通过阅读本文,您将收获以下知识点:
一、背景
二、问题分解
三、工具分析
四、 traceView教程
五、surface create优化
六、systrace的教程
七、优化方案
八、前后切换速度优化
九、优化方案
十、热启动优化
十一、解决方案:
十二、驱动优化
一、背景
id5a、id6平台我们的相机,对比相同平台红米6a和6的相机,冷热启动,前后摄切换性能要差,对比竞品,我们期望优化的比红米6a和6的相机快10%.
二、问题分解
性能优化的核心就是找到影响性能的hotspot,查找hotspot也是有套路的,首先要把相机启动流程分解出来,一个阶段一个阶段分析。
相机的冷启动,可以分解如下几步:
1.AMS启动相机的Activity -> 相机的Activity收到onCreated消息 (可体现系统的性能)。
2.onCreate begin -> onCreate end(主要是ui的加载)
3.openCamera -> CameraOpened
4.TextureView add -> SurfaceTexture created (Surface的创建时间)
5.startPreview -> PreviewStarted
6.setWindow -> PreviewCallback
Log如下:
01-01 12:01:57.099 794 3012 I ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.mediatek.camera/.CameraLauncher bnds=[150,976][290,1202] (has extras)} from uid 10064
01-01 12:01:57.169 8261 8261 D CamAp_QuickActivity: [ 0.000ms][BEGIN] onCreate
01-01 12:01:57.196 8261 8295 I CamAp_API1-Handler-0: [openCamera]+
01-01 12:01:57.217 532 2586 I mtkcam-dev1: [createSpecificCameraDevice1] dlopen libmtkcam_device1.so +
01-01 12:01:57.224 532 2586 I mtkcam-dev1: [createSpecificCameraDevice1] dlopen libmtkcam_device1.so -
01-01 12:01:57.259 532 2586 I mtkcam-dev1: [createSpecificCameraDevice1] - 0xe6a0ec00
01-01 12:01:57.260 532 2586 I mtkcam-dev1: 0[CameraDevice1Base::open] +
01-01 12:01:57.419 532 2586 I mtkcam-dev1: 0[CameraDevice1Base::open] Add new cameraId 0 - 0xe6a0ec00
01-01 12:01:57.419 532 2586 I mtkcam-dev1: 0[CameraDevice1Base::open] -
01-01 12:01:57.424 8261 8295 I CamAp_API1-Handler-0: [openCamera]-, executing time = 228ms.
01-01 12:01:57.537 8261 826
MTK Camera性能优化分析与方案

最低0.47元/天 解锁文章
476

被折叠的 条评论
为什么被折叠?



