Android - Управление задачами с помощью Timer и TimerTask?

В настоящее время я пытаюсь настроить сканирование Wi-Fi в своем приложении Android, которое сканирует точки доступа WiFi каждые 30 секунд.

Я использовал Timer и TimerTask для правильного запуска сканирования с необходимыми мне интервалами.

Однако я хочу иметь возможность остановить и запустить сканирование, когда пользователь нажимает кнопку, и в настоящее время у меня возникают проблемы с остановкой и последующим перезапуском Timer и TimerTask.

Вот мой код

TimerTask scanTask;
final Handler handler = new Handler();
Timer t = new Timer();

public void doWifiScan(){

scanTask = new TimerTask() {
        public void run() {
                handler.post(new Runnable() {
                        public void run() {
                         wifiManager.scan(context); 
                         Log.d("TIMER", "Timer set off");
                        }
               });
        }};


    t.schedule(scanTask, 300, 30000); 

 }

  public void stopScan(){

   if(scanTask!=null){
      Log.d("TIMER", "timer canceled");
      scanTask.cancel();
 }

}

Таким образом, Timer и Task запускаются нормально, и сканирование происходит каждые 30 секунд, однако я не могу остановить его, я могу остановить Timer, но задача все еще происходит, и scanTask.cancel (), похоже, тоже не работает.

Есть лучший способ сделать это? Или я что-то упускаю в классах Timer / TimerTask?

Ответы на вопрос(3)

Ваш ответ на вопрос