java.lang.IllegalStateException:不在主线程谷歌地图上

Vin*_*hil 5 android google-maps

当我的Android应用程序代码从云消息传递平台接收数据并尝试将该数据放在地图上时,我收到上述错误 -

    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)
Run Code Online (Sandbox Code Playgroud)

以下是我的演示者(我在我的Android应用程序中使用MVP模式)从云消息传递服务接收位置消息时调用的代码.

@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()));
}
Run Code Online (Sandbox Code Playgroud)

并且addPolyLine函数调用中发生错误.请告诉我如何解决它.

Kha*_*aha 7

您必须在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()));
    }
});
Run Code Online (Sandbox Code Playgroud)

  • 所以活动本身不是UI线程? (2认同)