我正在使用一种方法来实例化新的Handler对象,并启动一种方法来在分配的时间内完成某些任务。问题在于,此计时器不会在每次方法调用时都重新启动,并且在后续的调用中会持续任何延迟的时间。
我想知道如何解决此问题。这是我的方法:
private void doTask() {
viewModel.getFeedBackMessage().set("Calculating ...");
viewModel.fetchData();
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
if (viewModel.getData() == null) {
viewModel.getFeedbackMessage().set("Failure.");
handler.removeCallbacks(this);
handler.postDelayed(this, 90000);
} else {
handler.removeCallbacks(this);
handler.postDelayed(this, 90000);
}
}
}, 90000);
}
编辑:
new Thread(() -> {
int elapsedTime = 0;
while (elapsedTime < 90000) {
try {
Thread.sleep(1000);
} catch (Exception ex) {}
if (currentLocation != null) {
break;
}
elapsedTime += 1000;
}
}).start();