Я хотел смоделировать местоположение маркера на карте.У меня есть список хранения значений LatLng в ArrayList.Я использую это значение для обновления на карте каждую секунду.Мне нужно, чтобы эта функция работала в AsyncTask, чтобы мой поток пользовательского интерфейса все еще реагировал.
Изначально я пытался использовать 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;
}
Есть ли способ сделать это?Спасибо.