我的应用有2个主题。 UI线程允许用户查看详细信息项,删除项,更改项属性,...以及1个线程从服务器更新数据,然后请求UI线程刷新RecyclerView
。每个更新数据,我调用clear()
的方法ArrayList
并使用来自服务器的新数据更新ArrayList
。这使得IndexOutOfBoundsException
如果我在线程2更新数据时与RecyclerView
进行交互。
所以在Activity
上,dispatchTouchEvent()
我等到更新数据完成后才启用用户互动。当用户与RecyclerView
交互时,我设置1 boolean
值以禁用线程第二更新数据。但有时会触发异常。有没有更好的解决方案呢?
答案 0 :(得分:0)
最简单的方法是简单地try/catch
可能发生异常的代码块,或者在使用之前检查您想要访问的索引。
答案 1 :(得分:0)
尝试使用synchronized对象。就像是 synchronized(“abc”){updateFromThread1();} synchronized(“abc”){updateFromThread2(); }