我想模拟地图上标记的位置。我有存储在 ArrayList 中的 LatLng 值列表。我使用此值每秒更新地图。我需要这个函数在 AsyncTask 中工作,这样我的 UI 线程仍然可以响应。
最初,我尝试使用Thread.sleep()但使应用程序没有响应。
protected String doInBackground(Void... voids) {
new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
@Override
public void run() {
for (int i = 0; i < waypoint.size(); i++) {
marker = googleMap.addMarker(new MarkerOptions().position(waypoint.get(0)));
marker.setPosition(waypoint.get(i));
try {
Thread.sleep(1000); // Thread sleep made application not responsive.
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}, 500);
return null;
}
我也尝试过使用.postDelayed,但整数i需要声明为 final,这是一个问题,因为我需要整数来改变值。
protected String doInBackground(Void... voids) {
for (int i = 0; i < waypoint.size(); i++) {
new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
@Override
public void run() {
marker = googleMap.addMarker(new MarkerOptions().position(waypoint.get(0)));
marker.setPosition(waypoint.get(i)); // Integer i needs to declare final.
}
}, 1000);
}
return null;
}
有没有办法做到这一点?谢谢你。