gpt4 book ai didi

android - 如何在 android 的单独线程中更新谷歌地图标记位置

转载 作者:行者123 更新时间:2023-11-30 02:05:18 26 4
gpt4 key购买 nike

我正在尝试在单独的线程中更新谷歌地图标记位置。我可以在主线程中很好地更新标记,但是一旦我在单独的线程中尝试它,应用程序就会崩溃。

日志:

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

最佳答案

您可以使用 runOnUiThread() 来修改工作线程内的标记位置,示例请参见 here .

在你的情况下它会是这样的:

    new Thread(new Runnable() {
Marker mkr = marker;
public void run(){

runOnUiThread(new Runnable() {
@Override
public void run() {
double lng = 78.486671;
double lat = 17.385044;
mkr.setPosition(new LatLng(lat, lng));
}
});

}
}).start();

关于android - 如何在 android 的单独线程中更新谷歌地图标记位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30764828/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com