直播间页面优化

来自:小草凡

You have to believe in yourself. That's the secret of success. 
       ---卓别林

好久没有更新博客了,自己转作直播类应用已经一年多。接触了一些应用开发的框架技巧,不记录,久了就容易忘记,现在重新开始更新博客。

最近发现我们直播应用在进入直播间时,能感受到明显的卡顿。本篇博文记录优化该问题的过程。

优化前

systrace作为分析卡顿问题的利器,本篇记录的优化方法,正是借助它实现的,优化前的systrace如下图。

优化前

透过systrace 标1的地方可以看到启动直播间的观看页面耗时近乎1s钟,难怪用户会感受到卡顿。标2跟标3的地方都是耗时的大户,放大systrace文件分别进行排查。

帧动画资源过大

标2放大图

透过放大后的标2处,发现一个combo_anim.xml 资源文件竟然耗时60ms,打开该文件如下:

combo_anim

这个帧动画是为了播放直播间小礼物而存在的,由于是通过数十张图片组合而成的,难怪加载耗时那么久,在接着排查,发现了好几处类似的资源,这些都是需要优化的地方。礼物相关的资源文件在刚进入直播间是没有必要加载的,因此这里通过ViewStub控件让礼物相关的布局实现惰性加载。

加载了不必要的webview

在接着看标3的地方

这里WebViewChromium初始化占据了大部分时间,WebView是为了加载游戏直播房间内的网页游戏而生的,进入直播间加载也不需要,可以通过判断是否是游戏房间在决定是否初始化webview来进行优化。

按需加载语音业务模块

再继续看有一块audiolive相关的view也在进入房间时被初始化了。

通过判断是否是语言房间来决定是否加载该块view。

优化后效果

最后看下优化后的效果,从900ms优化到了300ms。

优化后

在优化的过程中,透过systrace文件还是比较容易发现卡顿的症结在哪,但在修改的过程中,要注意可能导致的风险。任何修改旧业务的代码都可能会导致新的问题,如果引起了新的问题,那优化工作就得不偿失了。

推荐↓↓↓
安卓开发
上一篇:2019 年面试感触 下一篇:从各大跨平台技术说开去,我们真的需要虚拟 DOM 吗?