1.Apk体积相关的优化
- 将图片转换为webp格式
- 去除多语言
- 去除不必要so库
- 去除无用资源Link检查
- 开启混淆
- 移除无用资源shinkResource
- 离线资源建议从服务器下载 不必打入APK包中
2.电量优化
- GPS优化 选择合适的定位模式,选择合适的定位间隔,不使用时即时注销。
- JobScheduler 把工作任务放到合适的时间去执行,比如充电时间,wifi连接之后
- 减少view绘制,
- 硬编码替换软编码 降低CPU负荷
- TCP心跳机制建议30s以后
- 定时器任务如果不是特殊的尽量在30s以后
3.后台存活
- Activity授权:监控手机锁屏解锁事件,在屏幕锁屏时启动1个像素透明的Activity,在用户解锁时将Activity销毁掉,从而达到提高进程优先级作用
- Service 授权:SDK>=26通过startForegroundService启动一个前台服务,如果开启startForegroundService前台服务,那么必须在5s内开启一个前台进程服务通知栏,不然会报ANR
- 广播拉活:在发生特定系统事件时,系统会发出广播,通过注册对应广播监听器,即可在发生响应事件时拉活。7.0开始,对广播进行了限制,8.0以上更加的严格。
- 全家桶拉活
- Service机制拉活:将service设置为START_STICKY,利用系统机制在Service挂掉后自动拉活,但是某些ROM系统不会拉活,Service第一次被异常杀死后很快被重启,第二次会比第一次慢,第三次会比前一次慢。
- JobScheduler拉活(官方推荐)
- 推送拉活:根据终端不同,在小米手机 接入小米推送,华为手机接入华为推送
- 双进程守护
- 加入白名单
4.布局优化
- 减少布局层级(merge标签,ConstraintLayout 布局使用)
- 布局复用:如果多个xml布局中都会使用相同的布局对象,那么可以考虑把相同布局抽出来一个单独的布局,然后以include形式添加
- 避免过度绘制(
在多层次重叠的UI结构里面,如果不可见的UI也在做绘制的操作,会导致某些像素区域被绘制了多次。这样就会浪费大量的CPU以及GPU资源。过度绘制最直观的影响就是会导致APP卡顿
):移除xml中非必须的背景,去掉默认背景 - viewStub标签加载不常用的布局
网友评论