-
Notifications
You must be signed in to change notification settings - Fork 83
在增删mIResponses的时候遍历通知没有处理清楚 #8
Comments
@447zyg 谢谢你的检查和反馈 ^_^ |
@447zyg 增删响应者的策略已完成改进。你的这个反馈对我们很重要!🙏 |
@KunMinX hi 我看了修改的代码 但是我觉得 这样的解决翻案并不是最终解决方案。我之前也提过增加synchronized 但是我觉得并不好所以修改了。 前提 用户网络不好。进入页面加载 但是这时候网不好 退出了(仍在加载中) 又进来又加载一次。 而且这不符合设计理念。 |
@447zyg 哈哈,你考虑的比较周全哈,我相信实际使用中 多多少少会遇到 你刚刚提到的情况。 确实,由于页面和业务完全分离,导致业务的执行不受页面控制,不与页面共存亡,使得下次哪怕页面注册个新的响应者实例,依然会因为响应码的匹配,而有可能重复接收不够及时发来的消息。 包括后面提到的,内存泄漏的问题,我再想想 😂 |
@KunMinX 😂内存泄露好像 加了 leakcanary 测试 暂时没发现 因为持有的引用在下次收到数据要发送通知的时候还是会被remove掉。我之前有考虑采用CopyOnWriteArrayList (在你改代码之前) 感觉好像还行?还是也有隐藏的坑。暂时还没发现 |
@447zyg 啊,能预见“过时消息的发送”,感觉你对并发的处理有一定经验哈,放手做吧,我相信你! |
@KunMinX 关于多线程访问 `public class BaseBus {
}` |
@447zyg 酷 |
虽然考虑了用int length = mIResponses.size();
来处理ConcurrentModificationException
但是如果删减了mIResponses
循环就数组越界了。
也可能导致跳过需要接收的观察者
The text was updated successfully, but these errors were encountered: