Android性能优化
- 摘要:布局优化UI渲染机制,系统每次渲染时间(所有程序逻辑)保持在16ms内。检测UI渲染时间的工具->>开发者选项-ProfileGPURending。View的onDraw方法中不要做耗时任务,也不能执行成千上万次的循环操作。避免Overdraw,->>EnableGPUOverdraw优化布局层级,View树高度不超过10避免嵌套过多无用布局对于一些共通的UI,使用<include>标签重用Layout使用<ViewStub>
- 标签:android 性能优化 优化
- 布局优化
- UI渲染机制,系统每次渲染时间(所有程序逻辑)保持在16ms内。检测UI渲染时间的工具->>开发者选项-Profile GPU Rending。View的onDraw方法中不要做耗时任务,也不能执行成千上万次的循环操作。
- 避免Overdraw, ->> Enable GPU Overdraw
- 优化布局层级,View树高度不超过10
- 避免嵌套过多无用布局
- 对于一些共通 的UI,使用<include>标签重用Layout
- 使用<ViewStub>实现View的延迟加载
- Hierarchy Viewer工具的使用 ->>之后可查看官方API文档
- 内存优化
- bitmap优化
- 使用适当分辨率和大小的图片:图片分辨率-资源文件夹
- 及时回收内存:bitmap.recycle() Android3.0后不需要释放了
- 使用图片缓存:内存缓存,硬盘缓存
- 代码优化
- 对常量使用static修饰符
- 使用静态方法,能够比普通方法提高15%左右的访问速度
- 减少不必要的成员变量,这点在Android Lint工具上已经集成检测,如果一个变量可以定义为局部变量,则会建议你不要定义为成员变量【用完就扔?
- 尽量不要使用枚举,少用迭代器
- 对Cursor、Receiver、Sensor、File等对象,要非常注意对它们的创建、回收与注册、解注册。
- 避免使用IOC框架,IOC通常使用注解、反射来进行实现,大量使用反射会带来性能的下降
- 使用RenderScript,OpenGL来进行非常复杂的绘图操作
- 使用SurfaceView来替代View进行大量,频繁的绘图操作【如二维码扫描
- 尽量使用视图缓存,而不是每次都执行inflate()方法解析视图
- Lint工具:提示冗余布局
- Memory Monitor工具:对内存进行实时分析
- 使用TraceView工具优化App性能【需要具体学习应用】p241
- 使用MAT工具分析App内存状态【需要具体学习应用】p244
- 使用Dumpsys命令分析系统状态p247