I am trying to integrate a third party location finding service into
my app and I am using the results of the location to place an overlay
onto my map.  The answer to this question is not "use
MyLocationOverlay".  I am moving away from that for non-GPS accuracy
reasons.

When the third party location callback is executed, I update where
this overlay is to reflect the new location.  Doing this makes the
application throw a ConcurrentModificationException.  Here is the full
stack trace:

ERROR/AndroidRuntime(5440): Uncaught handler: thread main exiting due
to uncaught exception
ERROR/AndroidRuntime(5440): java.util.ConcurrentModificationException
ERROR/AndroidRuntime(5440):     at java.util.AbstractList
$SimpleListIterator.next(AbstractList.java:66)
ERROR/AndroidRuntime(5440):     at
com.google.android.maps.OverlayBundle.draw(OverlayBundle.java:44)
ERROR/AndroidRuntime(5440):     at
com.google.android.maps.MapView.onDraw(MapView.java:471)
ERROR/AndroidRuntime(5440):     at android.view.View.draw(View.java:
5838)
ERROR/AndroidRuntime(5440):     at android.view.ViewGroup.drawChild
(ViewGroup.java:1486)
ERROR/AndroidRuntime(5440):     at android.view.ViewGroup.dispatchDraw
(ViewGroup.java:1228)
ERROR/AndroidRuntime(5440):     at android.view.ViewGroup.drawChild
(ViewGroup.java:1484)
ERROR/AndroidRuntime(5440):     at android.view.ViewGroup.dispatchDraw
(ViewGroup.java:1228)
ERROR/AndroidRuntime(5440):     at android.view.View.draw(View.java:
5841)
ERROR/AndroidRuntime(5440):     at android.widget.FrameLayout.draw
(FrameLayout.java:352)
ERROR/AndroidRuntime(5440):     at android.view.ViewGroup.drawChild
(ViewGroup.java:1486)
ERROR/AndroidRuntime(5440):     at android.view.ViewGroup.dispatchDraw
(ViewGroup.java:1228)
ERROR/AndroidRuntime(5440):     at android.view.ViewGroup.drawChild
(ViewGroup.java:1484)
ERROR/AndroidRuntime(5440):     at android.view.ViewGroup.dispatchDraw
(ViewGroup.java:1228)
ERROR/AndroidRuntime(5440):     at android.view.View.draw(View.java:
5841)
ERROR/AndroidRuntime(5440):     at android.widget.FrameLayout.draw
(FrameLayout.java:352)
ERROR/AndroidRuntime(5440):     at
com.android.internal.policy.impl.PhoneWindow$DecorView.draw
(PhoneWindow.java:1847)
ERROR/AndroidRuntime(5440):     at android.view.ViewRoot.draw
(ViewRoot.java:1217)
ERROR/AndroidRuntime(5440):     at
android.view.ViewRoot.performTraversals(ViewRoot.java:1030)
ERROR/AndroidRuntime(5440):     at android.view.ViewRoot.handleMessage
(ViewRoot.java:1482)
ERROR/AndroidRuntime(5440):     at android.os.Handler.dispatchMessage
(Handler.java:99)
ERROR/AndroidRuntime(5440):     at android.os.Looper.loop(Looper.java:
123)
ERROR/AndroidRuntime(5440):     at android.app.ActivityThread.main
(ActivityThread.java:3948)
ERROR/AndroidRuntime(5440):     at
java.lang.reflect.Method.invokeNative(Native Method)
ERROR/AndroidRuntime(5440):     at java.lang.reflect.Method.invoke
(Method.java:521)
ERROR/AndroidRuntime(5440):     at com.android.internal.os.ZygoteInit
$MethodAndArgsCaller.run(ZygoteInit.java:782)
ERROR/AndroidRuntime(5440):     at
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540)
ERROR/AndroidRuntime(5440):     at dalvik.system.NativeStart.main
(Native Method)


I am assuming that this third party callback is not executed in a safe
way.  Is there a paradigm I should follow to make sure that this is
executed safely?  For instance, does anyone know what
MyLocationOverlay does to make sure its callback is executed safely
for updating the overlay?  I could not find source for
MyLocationOverlay.

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to