手机用久了卡得要命,打开个破应用要等半天,特别是那个奉献应用,每次进设置页面直接闪退,气得我差点砸手机。寻思着这破优化必须搞一波,干脆掏家伙开干。
第一步:捅开机启动的篓子
直接插电脑刷开发模式,adb命令唰唰跑起来。盯着logcat刷屏半天,发现每次冷启动加载七八个第三方库,光是解析配置文件就卡了5秒。
骚操作来了:- 把不要脸的启动项全砍了,能延迟加载的通通挪后
- 启动页面的广告图从高清压成马赛克
- 初始化代码用异步线程硬拆成三截
开机计时器一掐:好家伙!从原来12秒降到7秒,手指头还没数完就进主页了。
小编温馨提醒:本站只提供游戏介绍,下载游戏推荐89游戏,89游戏提供真人恋爱/绅士游戏/3A单机游戏大全,点我立即前往》》》绅士游戏下载专区
第二步:揪内存泄露的鬼
打开检测工具刚跑十分钟,内存曲线跟心电图似的乱跳。重点怀疑那个用户勋章展示页,每次点进去内存就涨10M,返回后死活不释放。
蹲在代码堆里扒拉三天发现:勋章图片加载器跟页面生命周期绑反了,页面关闭时还在后台疯狂加载1080p大图。改完当场测试,连续跳转二十次页面都没闪退。
第三步:给布局动刀子
打开布局检查器吓懵了:嵌套了六层RelativeLayout,一个破按钮要测量三次才显示。直接抄起ConstraintLayout大刀阔斧改:
- 砍掉三层嵌套布局
- 重复背景图全换成.9图
- TextView跑马灯效果改用代码控制
最明显是那个排行榜页面,滚动帧率从40fps飚到58fps,丝滑得跟德芙似的。
翻车现场
正美滋滋打包发测试版,用户反馈说勋章页面变空白了!连夜回滚代码才发现:弱引用缓存清理太狠,图片加载器还没干活就被系统回收了。折中方案:
- 缓存时间从15秒改成25秒
- 重要图片加内存锁定标记
- 低内存设备自动降画质
现在安装包反倒比原来胖了2M,这波优化真是拆东墙补西墙。但看着崩溃率从15%降到0.3%,想想也算没白折腾。老安卓这破车,想提速就得随时备着扳手捅咕,哪有什么一劳永逸的优化。