积极思考造成积极人生,消极思考造成消极人生。
本文记录最近针对手头应用做的一些优化,主要介绍优化切入点,具体优化措施,不做重点描述。
UI重绘问题
透过开发者模式下的重绘检查选项,检查过度重绘问题。开启检测过渡绘制开关,UI类似下图的样子。
官方的过度绘制说明如下:
透过上述信息就能直观看到是否存在过渡绘制问题。过度绘制问题发现后,主要通过以下方式解决:
- 使用ConstraintLayout减少布局嵌套
- 使用ViewStub惰性加载非必须呈现的UI
- 清理代码,移除旧代码中已经废弃的UI
不必要的网络请求
不必要的网络请求会无端消耗用户宝贵的流量,同时也会拉高应用的功耗,降低应用性能。
查看网络请求可以通过android studio的Profiler工具监测,同时也可以用chrome浏览器进行查看,本文介绍chrome浏览器查看。
如上图在chrome浏览器输入
点击inspect,会弹出工具框
每一次操作引起的网络请求都会在右边显示出来,我们可以直观的看到哪些网络请求在频繁的调用。
在针对我们应用debug时通过该工具就发现了进入直播间会频繁下载礼物动画资源的情况。礼物动画资源比较大,有的可以达到10M左右,为了在直播间播放礼物时,能够流程,大礼物资源都是提前预先下载到本地的,然而这里每次进入直播间都可以看到在下载礼物,这个就非常不合业务逻辑了,发现该可疑点后,通过代码排查发现是我们用到的Fresco框架,在设置本地缓存时只设置了200M,而大礼物体积比较大,很容易就达到本地缓存上限,于是Fresco框架自动删除了一些本地缓存的大礼物,这就导致了每次进入直播间,都在下载大礼物。
将本地缓存增大后,在查看就发现没有在出现每次进入直播间都在下载大礼物了。结合android studio的Profiler工具可以看到网络请求很平稳了。