2016-12-20 110 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

是的,請嘗試/趕上解決一切。 –