2016-12-01 32 views
1

在我的代號爲一個應用程序,包括:(安卓)原生接口的實現,我收到的設備上,不時一個ConcurrentModificationException的該堆棧跟蹤寫着:ConcurrentModificationException的在代號爲一個應用程序

W/System.err: java.util.ConcurrentModificationException 
W/System.err:  at java.util.ArrayList$ArrayListIterator.next(ArrayList.java:573) 
W/System.err:  at com.codename1.impl.android.AndroidAsyncView.flushGraphics(AndroidAsyncView.java:380) 
W/System.err:  at com.codename1.impl.android.AndroidImplementation.flushGraphics(AndroidImplementation.java:1147) 
W/System.err:  at com.codename1.impl.CodenameOneImplementation.paintDirty(CodenameOneImplementation.java:580) 
W/System.err:  at com.codename1.ui.Display.edtLoopImpl(Display.java:1075) 
W/System.err:  at com.codename1.ui.Display.mainEDTLoop(Display.java:997) 
W/System.err:  at com.codename1.ui.RunnableWrapper.run(RunnableWrapper.java:120) 
W/System.err:  at com.codename1.impl.CodenameOneThread$1.run(CodenameOneThread.java:60) 
W/System.err:  at java.lang.Thread.run(Thread.java:841) 

我的代碼(代號一部分或本地接口實現)不使用ArrayList,並且在彈出「內部錯誤」時單擊確定後應用程序可以繼續,但我寧願避免此錯誤。

我應該在哪裏查看以防止發生此錯誤?

任何幫助非常感謝,

回答

1

這意味着代碼觸發了一個單獨的線程某種原因,本地重繪。與對等組件交互的本地代碼是否使用Android本地UI線程進行交互?

如果不是這可能會觸發競爭條件。

+0

在本地代碼中調用'AndroidImplementation.runOnUiThreadAndBlock()'來啓動相機及其預覽,這對我來說很合理,因爲這個代碼塊實際上是在修改UI。稍後,代碼再次調用'AndroidImplementation.runOnUiThreadAndBlock()'來設置視圖亮度。請注意,自從[post](http://stackoverflow.com/a/40916205/6351897)中描述的更改發生以外,異常消失。這對你來說有意義嗎@Shai? – HelloWorld

+0

這可能是有道理的,雖然很難判斷它的「和塊」方面是否正確,而不深入代碼。 –

相關問題