android-discuss
android-discuss copied to clipboard
如何优化一个频繁刷新的聊天列表?
情况是这样的:我们公司开发了一个直播软件。
这个app在其中一个界面上,有一个播放器surfaceview,下方则是弹幕聊天区。
sufaceview不停的播放主播的视频画面,弹幕聊天区则是一个recyclerview,不停的刷新和添加新的弹幕。 现在的问题是,这个界面有点卡,基于播放器界面本身就耗费资源,但去掉优化播放器的地方寻找其他可以优化的地方,我初步分析是因为recyclerView的频繁刷新导致的。
现在的app逻辑是每隔1秒就去轮询一次服务器的弹幕,如果有新的弹幕就将弹幕添加到recyclerview中,并刷新它。不知道这个逻辑是否有可以优化的地方?
当然也不排除逻辑没有问题,而是其他地方的代码导致这个界面卡的情况(因为我们的app充满了各种动画和一些七七八八的酷炫功能)。
我不知道例如斗鱼战旗那些app,在处理弹幕上有没有什么优化的地方?
反编译一下它们的app,看能否找到蛛丝马迹
我们就是用DanmakuFlameMaster。。。 但是这个是用来显示在surfaceview上的,我指的是listview
刚刚不是说用recyclerView的吗?如果recyclerView的话,可以关闭动画,会好一点,只有一点点
T_T已经是关闭的了,哎,这界面卡的我看的好烦,异常想优化它,这个代码好古老的,写的人已经离职了,现在我重构了另一个界面,让它变得快多了
硬件加速要打开
斗鱼的列表也卡
看看花椒直播
recyclerview貌似可以指定范围刷新,不知道会不会快点
用notifyiteminsert
2016-01-09 10:44 GMT+08:00 ipcjs [email protected]:
recyclerview貌似可以指定范围刷新,不知道会不会快点
— Reply to this email directly or view it on GitHub https://github.com/android-cn/android-discuss/issues/343#issuecomment-170183786 .
聊天列表的数据是不停的添加新数据,而不是替换旧的item。所以singleItem的刷新没有用啊
还是用分析工具,看看具体看看方法调用的时间,不能只靠猜想.
@HomHomLin 仔细看api,insert、remove、item Change、rangeChange都有
轮询这种机制本身就不太好吧!
不知道界面是什么样子,会不会measure过多,导致帧率过低,可以看看布局是否有问题,自定义控件三大过程是不是有问题。曾经遇到过listview的height写成了WRAP_CONTENT,结果滑动的时候很卡。
1s轮询才是该最先优化的点啊,建议长连接
我现在遇到差不多的问题,倒不是很卡顿,就是频繁的来消息的时候,动画看上去很不舒服
1s轮询看看一个连接多久关闭吧 还有使用insert来刷新recycleView,应避免整个recycleView刷新