0

Google Play に存在するマップに基づく私の Android アプリで、ユーザーがクラッシュを経験します。
GPS位置情報検索時に一度だけ表示されるようです。ここに2人のユーザーが私に送った例外があります:

クラス: java.util.ConcurrentModificationException メソッド: ArrayList$ArrayListIterator.next()

スタック:

java.util.ConcurrentModificationException
    at java.util.ArrayList$ArrayListIterator.next(ArrayList.java:576)
    at com.google.android.maps.OverlayBundle.draw(OverlayBundle.java:44)
    at com.google.android.maps.MapView.onDraw(MapView.java:530)
    at android.view.View.draw(View.java:6970)
    at android.view.ViewGroup.drawChild(ViewGroup.java:1732)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
    at android.view.ViewGroup.drawChild(ViewGroup.java:1730)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
    at android.view.View.draw(View.java:6973)
    at android.widget.FrameLayout.draw(FrameLayout.java:357)
    at android.view.ViewGroup.drawChild(ViewGroup.java:1732)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
    at android.view.ViewGroup.drawChild(ViewGroup.java:1730)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
    at android.view.ViewGroup.drawChild(ViewGroup.java:1730)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
    at android.view.ViewGroup.drawChild(ViewGroup.java:1730)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
    at android.view.ViewGroup.drawChild(ViewGroup.java:1730)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
    at android.view.View.draw(View.java:6973)
    at android.widget.FrameLayout.draw(FrameLayout.java:357)
    at android.view.ViewGroup.drawChild(ViewGroup.java:1732)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
    at android.view.View.draw(View.java:6973)
    at android.widget.FrameLayout.draw(FrameLayout.java:357)
    at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1971)
    at android.view.ViewRoot.draw(ViewRoot.java:1600)
    at android.view.ViewRoot.performTraversals(ViewRoot.java:1321)
    at android.view.ViewRoot.handleMessage(ViewRoot.java:1957)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:143)
    at android.app.ActivityThread.main(ActivityThread.java:4277)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:507)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
    at dalvik.system.NativeStart.main(Native Method)

シミュレーションでは表示されません。それについて何か考えはありますか?

事前に送信します。

EDIT ルイスは私のスレッドに何か問題があると疑っています:

    public void onLocationChanged(Location location) {
    // TODO Auto-generated method stub
    Log.d(TAG, "onLocationChanged with location " + location.toString());
    // Displays lat, long, altitude and bearing
    String text = String.format("Lat:\t %f\nLong:\t %f\nAlt:\t %f\nBearing:\t %f", location.getLatitude(), location.getLongitude(), location.getAltitude(), location.getBearing());
    this.locationText.setText(text);


    try {
        // This gets a list of addresses 
        List<Address> addresses = geocoder.getFromLocation(location.getLatitude(), location.getLongitude(), 10);
        for (Address address : addresses) {
            this.locationText.append("\n" + address.getAddressLine(0));
        }

        // Convert latitude and longitude into int that the GeoPoint constructor can understand
        int latitude = (int)(location.getLatitude() * 1000000);
        int longitude = (int)(location.getLongitude() * 1000000);

        GeoPoint point = new GeoPoint(latitude,longitude);
        mapController.animateTo(point);

    } catch (IOException e) {
        Log.e("LocateMe", "Could not get Geocoder data", e);
    }
}
}
4

1 に答える 1

1

コードでスレッドを使用していますか?

MapViewクラスがそれらを描画するために繰り返し処理している間に、スレッドの 1 つがオーバーレイ リストに何かを追加しようとしているようです。

より具体的な答えを得るには、関連するコードを投稿する必要があります。

よろしく。

于 2012-11-23T17:27:48.283 に答える