-
应用启动
-
onCreate, 到 onResume的生命周期,不允许做耗时操作,不能超过400ms的启动时间。否则页面启动会有明显卡顿。(部分启动线程的方式也不行,启动线程本身有时候也很消耗时间,充分利用Handle机制可以规避,小技巧)。
-
针对Application类,不要在里面做业务操作和耗时操作,特别注意各种耗时的初始化等,不要以静态变量的方式去保存数据,懒加载或者延迟获取等处理优先
-
针对Launcher Activity,不要在Activity的onCreate方法进行耗时操作,如有必要则在线程中操作或者延迟操作,懒加载等。
-
针对View的绘制,减少页面层级,最好不要超过4层,减少View的测量绘制时间
-
UI描绘
-
使用merge,viewstub,include等手段去共通化和懒加载View
-
移除不必要的background,避免过度绘制
-
布局layout尽量不要超过4层,确保绘制16ms完成渲染
-
内存
-
对于UI切图,需要进行png资源压缩,再讲png转75%的webp。总之,保证背景不失真的情况下,尽量去减少Size。
-
随着工程的需求变化,无用的图片资源等,需要定期清理。
-
帧动画消耗内存过大,需要采用帧动画降帧,(帧动画在20FPS下即可满足基本效果,动画降帧讲图片切换间隔设置成50ms),进入后台缓存清除。及使用Json动画或者属性动画代替帧动画等策略。
-
当界面不可见应该释放内存
-
避免在Bitmap上浪费内存,对大图片,先获取图片的大小信息,根据实际展示大小计算inSampleSize,最后decode。
-
CPU
-
原生跑马灯控件耗CPU性能,需要采用跑马灯自定义控件,代替原生跑马灯。
-
资源文件很大的帧动画,可采用视频播放方式代替(无音频格式的视频文件)。
-
精简Log, 尤其是E级别的Log,对于User版本,只打印E级别的log,各个你快尽量减少E级别的Log
-
***避免应用进程过多,合理合并进程,减少CPU和内存使用。
-
对于使用无障碍服务监控用户的应用,应筛选出必要事件类型,不可监听所有的事件
-
View避免过度绘制,避免使CPU和GPU负载过重
-
UI渲染引擎(如Kanzi),应控制进入后台停止渲染
-
HMI应用进入后台后,尽量不要进行逻辑处理了,避免内存泄漏等。