android-discuss icon indicating copy to clipboard operation
android-discuss copied to clipboard

如何优化一个频繁刷新的聊天列表?

Open HomHomLin opened this issue 9 years ago • 18 comments

情况是这样的:我们公司开发了一个直播软件。

这个app在其中一个界面上,有一个播放器surfaceview,下方则是弹幕聊天区。

sufaceview不停的播放主播的视频画面,弹幕聊天区则是一个recyclerview,不停的刷新和添加新的弹幕。 现在的问题是,这个界面有点卡,基于播放器界面本身就耗费资源,但去掉优化播放器的地方寻找其他可以优化的地方,我初步分析是因为recyclerView的频繁刷新导致的。

现在的app逻辑是每隔1秒就去轮询一次服务器的弹幕,如果有新的弹幕就将弹幕添加到recyclerview中,并刷新它。不知道这个逻辑是否有可以优化的地方?

当然也不排除逻辑没有问题,而是其他地方的代码导致这个界面卡的情况(因为我们的app充满了各种动画和一些七七八八的酷炫功能)。

我不知道例如斗鱼战旗那些app,在处理弹幕上有没有什么优化的地方?

HomHomLin avatar Jan 08 '16 07:01 HomHomLin

反编译一下它们的app,看能否找到蛛丝马迹

asdzheng avatar Jan 08 '16 07:01 asdzheng

据说B站开源了号称Android上最好的弹幕引擎DanmakuFlameMaster

@HomHomLin 我没用过,但是我觉得你可以看看

lumenghz avatar Jan 08 '16 07:01 lumenghz

我们就是用DanmakuFlameMaster。。。 但是这个是用来显示在surfaceview上的,我指的是listview

HomHomLin avatar Jan 08 '16 08:01 HomHomLin

刚刚不是说用recyclerView的吗?如果recyclerView的话,可以关闭动画,会好一点,只有一点点

zzz40500 avatar Jan 08 '16 08:01 zzz40500

T_T已经是关闭的了,哎,这界面卡的我看的好烦,异常想优化它,这个代码好古老的,写的人已经离职了,现在我重构了另一个界面,让它变得快多了

HomHomLin avatar Jan 08 '16 09:01 HomHomLin

硬件加速要打开

l123456789jy avatar Jan 08 '16 09:01 l123456789jy

斗鱼的列表也卡

yankai-victor avatar Jan 08 '16 09:01 yankai-victor

看看花椒直播

tianshaokai avatar Jan 09 '16 02:01 tianshaokai

recyclerview貌似可以指定范围刷新,不知道会不会快点

ipcjs avatar Jan 09 '16 02:01 ipcjs

​用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 .

Qixingchen avatar Jan 09 '16 03:01 Qixingchen

聊天列表的数据是不停的添加新数据,而不是替换旧的item。所以singleItem的刷新没有用啊

HomHomLin avatar Jan 09 '16 03:01 HomHomLin

还是用分析工具,看看具体看看方法调用的时间,不能只靠猜想.

ronanhardiman avatar Jan 09 '16 05:01 ronanhardiman

@HomHomLin 仔细看api,insert、remove、item Change、rangeChange都有

ipcjs avatar Jan 09 '16 14:01 ipcjs

轮询这种机制本身就不太好吧!

chenchongyu avatar Jun 14 '16 09:06 chenchongyu

不知道界面是什么样子,会不会measure过多,导致帧率过低,可以看看布局是否有问题,自定义控件三大过程是不是有问题。曾经遇到过listview的height写成了WRAP_CONTENT,结果滑动的时候很卡。

chopiter avatar Jun 14 '16 09:06 chopiter

1s轮询才是该最先优化的点啊,建议长连接

Dkaishu avatar Mar 30 '19 03:03 Dkaishu

我现在遇到差不多的问题,倒不是很卡顿,就是频繁的来消息的时候,动画看上去很不舒服

NoahZu avatar Jul 25 '19 06:07 NoahZu

1s轮询看看一个连接多久关闭吧 还有使用insert来刷新recycleView,应避免整个recycleView刷新

KKaKa avatar Jul 25 '19 06:07 KKaKa