RecyclerView数据在UI线程和更新线程之间同步

时间:2016-12-20 09:19:59

标签: android android-recyclerview

我的应用有2个主题。 UI线程允许用户查看详细信息项,删除项,更改项属性,...以及1个线程从服务器更新数据,然后请求UI线程刷新RecyclerView。每个更新数据,我调用clear()的方法ArrayList并使用来自服务器的新数据更新ArrayList。这使得IndexOutOfBoundsException如果我在线程2更新数据时与RecyclerView进行交互。

所以在Activity上,dispatchTouchEvent()我等到更新数据完成后才启用用户互动。当用户与RecyclerView交互时,我设置1 boolean值以禁用线程第二更新数据。但有时会触发异常。有没有更好的解决方案呢?

2 个答案:

答案 0 :(得分:0)

最简单的方法是简单地try/catch可能发生异常的代码块,或者在使用之前检查您想要访问的索引。

答案 1 :(得分:0)

尝试使用synchronized对象。就像是 synchronized(“abc”){updateFromThread1();} synchronized(“abc”){updateFromThread2(); }

相关问题