2016-09-05 2 views
2

Я получаю вышеуказанную ошибку, когда мой Android код приложение получает данные от платформы облачной системы обмена сообщениями, и я пытаюсь положить, что данные на карте -java.lang.IllegalStateException: Не на главной теме 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) 

Ниже приведен код, который вызывается моим презентатором (я использую шаблон MVP для моего приложения для Android), когда он получает сообщение о местоположении из службы Cloud Messaging.

@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())); 
} 

И ошибка возникает в вызове функции addPolyLine. Пожалуйста, скажите мне, что можно сделать, чтобы решить проблему.

+0

Выполнить это на UI потоке – Nithinlal

ответ

3

вы должны запустить этот код в UIThread:

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

поэтому активность сама по себе не является UI Thread? –

+1

действие также выполняется в UIThread, любое обновление в пользовательском интерфейсе должно быть в UIThread, а не в любом другом потоке. –

+0

, если этот ответ решил вашу проблему, отметьте его как решение –

Смежные вопросы