如何在方法调用时重新启动Handler / Runnable?

时间:2019-03-08 17:37:06

标签: java android multithreading

我正在使用一种方法来实例化新的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();

0 个答案:

没有答案