1
Я пытаюсь обновить позицию маркера google в отдельном потоке. Я могу обновить маркер в основном потоке, но как только я попробую его в отдельном потоке, приложение выйдет из строя.Как обновить позицию маркера google в отдельном потоке в android
Logcat:
06-10 12:35:37.107: E/AndroidRuntime(25915): FATAL EXCEPTION: Thread-2909
06-10 12:35:37.107: E/AndroidRuntime(25915): java.lang.IllegalStateException: Not on the main thread
06-10 12:35:37.107: E/AndroidRuntime(25915): at com.google.l.a.ce.b(Unknown Source)
06-10 12:35:37.107: E/AndroidRuntime(25915): at com.google.maps.api.android.lib6.d.ct.a(Unknown Source)
06-10 12:35:37.107: E/AndroidRuntime(25915): at com.google.maps.api.android.lib6.d.aq.a(Unknown Source)
06-10 12:35:37.107: E/AndroidRuntime(25915): at com.google.android.gms.maps.model.internal.t.onTransact(SourceFile:73)
06-10 12:35:37.107: E/AndroidRuntime(25915): at android.os.Binder.transact(Binder.java:380)
06-10 12:35:37.107: E/AndroidRuntime(25915): at com.google.android.gms.maps.model.internal.zzi$zza$zza.setPosition(Unknown Source)
06-10 12:35:37.107: E/AndroidRuntime(25915): at com.google.android.gms.maps.model.Marker.setPosition(Unknown Source)
и нить:
new Thread(new Runnable() {
Marker mkr = marker;
public void run(){
double lng = 78.486671;
double lat = 17.385044;
mkr.setPosition(new LatLng(lat, lng));
}
}).start();
Как говорится об ошибках, вы не можете обновить маркеры от основного потока пользовательского интерфейса. Что вы пытаетесь сделать, выполняя это в отдельном потоке? – dharms
Im отслеживает что-то и нужно отметить его положение на карте. Lng и lat объекта будут меняться, и я хотел бы обновить маркер, чтобы указать его местоположение. –
Вы можете использовать 'runOnUiThread()' для изменения позиции маркера внутри рабочего потока, например, здесь: http://stackoverflow.com/questions/11140285/how-to-use-runonuithread/11140429#11140429 –