1001 * ребята *
У меня очень странная проблема из-за многих дней. Я пытаюсь часто обновлять оверлей. Так что иногда я получаю «java.util.ConcurrentModificationException», когда я касаюсь карты, или иногда, когда карта пытается обновить оверлей, но я не нахожу идеальную линию, которая появляется по этой ошибке.
02-17 14:56:01.621: W/dalvikvm(3653): threadid=1: thread exiting with uncaught exception (group=0x40015560)
02-17 14:56:01.631: E/AndroidRuntime(3653): FATAL EXCEPTION: main
02-17 14:56:01.631: E/AndroidRuntime(3653): java.util.ConcurrentModificationException
02-17 14:56:01.631: E/AndroidRuntime(3653): at java.util.ArrayList$ArrayListIterator.next(ArrayList.java:576)
02-17 14:56:01.631: E/AndroidRuntime(3653): at com.google.android.maps.OverlayBundle.draw(OverlayBundle.java:41)
02-17 14:56:01.631: E/AndroidRuntime(3653): at com.google.android.maps.MapView.onDraw(MapView.java:530)
02-17 14:56:01.631: E/AndroidRuntime(3653): at android.view.View.draw(View.java:6880)
02-17 14:56:01.631: E/AndroidRuntime(3653): at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
02-17 14:56:01.631: E/AndroidRuntime(3653): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
02-17 14:56:01.631: E/AndroidRuntime(3653): at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
02-17 14:56:01.631: E/AndroidRuntime(3653): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
02-17 14:56:01.631: E/AndroidRuntime(3653): at android.view.View.draw(View.java:6883)
02-17 14:56:01.631: E/AndroidRuntime(3653): at android.widget.FrameLayout.draw(FrameLayout.java:357)
02-17 14:56:01.631: E/AndroidRuntime(3653): at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
02-17 14:56:01.631: E/AndroidRuntime(3653): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
02-17 14:56:01.631: E/AndroidRuntime(3653): at android.view.View.draw(View.java:6883)
02-17 14:56:01.631: E/AndroidRuntime(3653): at android.widget.FrameLayout.draw(FrameLayout.java:357)
02-17 14:56:01.631: E/AndroidRuntime(3653): at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
02-17 14:56:01.631: E/AndroidRuntime(3653): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
02-17 14:56:01.631: E/AndroidRuntime(3653): at android.view.View.draw(View.java:6883)
02-17 14:56:01.631: E/AndroidRuntime(3653): at android.widget.FrameLayout.draw(FrameLayout.java:357)
02-17 14:56:01.631: E/AndroidRuntime(3653): at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1862)
02-17 14:56:01.631: E/AndroidRuntime(3653): at android.view.ViewRoot.draw(ViewRoot.java:1522)
02-17 14:56:01.631: E/AndroidRuntime(3653): at android.view.ViewRoot.performTraversals(ViewRoot.java:1258)
02-17 14:56:01.631: E/AndroidRuntime(3653): at android.view.ViewRoot.handleMessage(ViewRoot.java:1859)
02-17 14:56:01.631: E/AndroidRuntime(3653): at android.os.Handler.dispatchMessage(Handler.java:99)
02-17 14:56:01.631: E/AndroidRuntime(3653): at android.os.Looper.loop(Looper.java:130)
02-17 14:56:01.631: E/AndroidRuntime(3653): at android.app.ActivityThread.main(ActivityThread.java:3683)
02-17 14:56:01.631: E/AndroidRuntime(3653): at java.lang.reflect.Method.invokeNative(Native Method)
02-17 14:56:01.631: E/AndroidRuntime(3653): at java.lang.reflect.Method.invoke(Method.java:507)
02-17 14:56:01.631: E/AndroidRuntime(3653): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
02-17 14:56:01.631: E/AndroidRuntime(3653): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
02-17 14:56:01.631: E/AndroidRuntime(3653): at dalvik.system.NativeStart.main(Native Method)
Я использую Наложение шаров
Я думаю, что это выдает ошибку на "mapview.getOverlay()"
, потому что это вызывает 4-5 раз в 1 секунду ..
Спасибо,
CapDroid
вот поток кода ..
Код моей темы ....
Thread connection = new Thread(){
public void run() {
try {
while (my condition)
{
try
{
//This method should be call every seconds
updateMethod();
}
catch (Exception e)
{
e.printStackTrace();
break;
}
}
}
catch (Exception e)
{
}
}
};
Вот мой updateMethod ();
в этом коде hashmapOverlay - это HashMap, как показано ниже
public static Map<String,MyItemizedOverlay> hashmapOverlay;
public void updateMethod()
{
if(hashmapOverlay.containsKey(id))
{
mapview.getOverlays().remove(hashmapOnlineFriendsOverlay.get(id));
}
MyItemizedOverlay mMyItemizedOverlay = new MyItemizedOverlay(drawable, mapview);
OverlayItem overlayItem = new OverlayItem(gp,title ,snippet);
mMyItemizedOverlay.addOverlay(overlayItem);
hashmapOverlay.put(id, mMyItemizedOverlay);
addOverlayMethod(mActivity, mapView, mMyItemizedOverlay);
}
Вот мой addOverlayMethod
addOverlayMethod(Activity mActivity, final MapView mapView, final Object mObject)
{
mActivity.runOnUiThread(new Runnable(){
@Override
public void run()
{
try {
MyItemizedOverlay overlay = (MyItemizedOverlay) mObject;
mapView.getOverlays().add(overlay);
} catch (Exception e)
{}
}
});
}