2016-09-05 4 views
2

Ich erhalte die oben genannten Fehler, wenn mein Android App-Code-Daten von einer Cloud-Messaging-Plattform empfängt, und ich versuche, dass die Daten auf der Karte zu setzen -java.lang.IllegalStateException: Nicht auf dem Hauptthread Google Maps

java.lang.IllegalStateException: Not on the main thread 
    at maps.w.c.a(Unknown Source) 
    at maps.y.F.a(Unknown Source) 
    at maps.ad.u.b(Unknown Source) 
    at vo.onTransact(:com.google.android.gms.DynamiteModulesB:92) 
    at android.os.Binder.transact(Binder.java:380) 
    at com.google.android.gms.maps.internal.IGoogleMapDelegate$zza$zza.animateCamera(Unknown Source) 
    at com.google.android.gms.maps.GoogleMap.animateCamera(Unknown Source) 
    at com.pabba.mtracker.tracking.view.TrackingActivity.onLocationReceived(TrackingActivity.java:54) 

Der folgende Code wird von meinem Referenten (ich verwende MVP Pattern für meine Android-App) aufgerufen, wenn er eine Standortnachricht vom Cloud Messaging-Dienst empfängt.

@Override 
public void onLocationReceived(LatLng latLng) { 
    Log.i(TAG, latLng.toString()); 
    mGoogleMap.addPolyline(new PolylineOptions().add(latLng)); 
    mGoogleMap.animateCamera(CameraUpdateFactory.newCameraPosition(new CameraPosition.Builder().target(latLng) 
      .zoom(13).build())); 
} 

Und der Fehler tritt in der AddPolyLine Funktionsaufruf. Bitte sagen Sie mir, was getan werden kann, um es zu lösen.

+0

Run auf UI-Thread – Nithinlal

Antwort

3

Sie müssen diesen Code in das UIThread laufen:

activity.runOnUIThread(new Runnable(){ 
    public void run(){ 
     mGoogleMap.addPolyline(new PolylineOptions().add(latLng)); 
     mGoogleMap.animateCamera(CameraUpdateFactory.newCameraPosition(new CameraPosition.Builder().target(latLng) 
     .zoom(13).build())); 
    } 
}); 
+2

so in sich die Aktivität ist nicht der UI-Thread? –

+1

Die Aktivität läuft auch im UIThread, jedes Update auf der UI sollte im UIThread kein anderer Thread sein. –

+0

Wenn diese Antwort Ihr Problem gelöst hat, markieren Sie es bitte als Lösung –