2011-01-05 23 views
1

は例外のコードです::解決方法致命的な例外:アンドロイドのタイマー11?ここ

if (getZoomLevel() != last_zoom) 
{ 
// if computeScroll called before timer counts down we should drop it and start it over again 
    zoom_event_delay_timer.cancel(); 
    zoom_event_delay_timer = new Timer(); 
    Log.v("last_zoom","last_zoom"); 
    zoom_event_delay_timer.schedule(new TimerTask() 
    { 
    @Override 
    public void run() 
    { 
     zoom_change_listener.onZoomChange(_this, getZoomLevel(), last_zoom); 
     Log.v("last_zoom","last_zoom"+last_zoom); 
     last_zoom = getZoomLevel(); 
     Log.v("last_zoom","last_zoom"); 
    } 
    }, events_timeout); 
} 

とエラー:

01-05 12:24:50.791: ERROR/AndroidRuntime(11132): FATAL EXCEPTION: Timer-11 
    01-05 12:24:50.791: ERROR/AndroidRuntime(11132): java.util.ConcurrentModificationException 
    01-05 12:24:50.791: ERROR/AndroidRuntime(11132):  at java.util.ArrayList$ArrayListIterator.next(ArrayList.java:573) 
    01-05 12:24:50.791: ERROR/AndroidRuntime(11132):  at com.bluepal.android.parkable.Prakablescreen.onRegionChange(Prakablescreen.java:1028) 
    01-05 12:24:50.791: ERROR/AndroidRuntime(11132):  at com.bluepal.android.parkable.Prakablescreen$14.onPanChange(Prakablescreen.java:467) 
    01-05 12:24:50.791: ERROR/AndroidRuntime(11132):  at com.bluepal.android.parkable.EnhancedMapView$2.run(EnhancedMapView.java:126) 
    01-05 12:24:50.791: ERROR/AndroidRuntime(11132):  at java.util.Timer$TimerImpl.run(Timer.java:289) 

答えて

1

ここでの問題は、別のスレッド(この場合はタイマー)からUIスレッドを呼び出しているようです。 説明と解決のためにthesesitesが見つかりました(私はハンドラを使用しました)。

1

いくつかのソースコードを入力してください。

エラーが発生したため、arraylistを繰り返して修正しているようです。その場合は、arraylist &の一時的なコンテナを使用して変更してから、この一時的なarraylistをarraylistに保存します。 100rabhが右であり、あなたはイテレータかかわらず、あなたのリストを変更していない場合

0

From the error it seems that you are trying to modify an arraylist while iterating over it

、多分あなたはスレッドセーフであるCopyOnWriteArrayListを、使用することができます。