2016-12-20 115 views
0

我的应用有2个线程。 UI线程允许用户查看详细项目,删除项目,更改项目属性,...和1个线程更新数据从服务器,然后请求UI线程刷新RecyclerView。每更新一次数据,我都会调用方法clear()ArrayList,并用服务器的新数据更新ArrayList。这使得IndexOutOfBoundsException当线程2更新数据时,如果我与RecyclerView交互。UI线程和更新线程之间的RecyclerView数据同步

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

+0

你必须同步线程之间的数据模型更改,但最简单的方法是通过'android.os.Handler'来更新UI线程中的数据。 – pskink

回答

0

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

0

尝试使用同步对象。类似于 synchronized(“abc”){updateFromThread1();} synchronized(“abc”){updateFromThread2(); }

+0

这不是应该如何处理 –

+0

是的,请尝试/赶上解决一切。 –