Android - Controlando uma tarefa com o Timer e o TimerTask?

Atualmente, estou tentando configurar uma varredura WiFi no meu aplicativo Android que procura pontos de acesso Wi-Fi a cada 30 segundos.

Usei o Timer e o TimerTask para executar a verificação corretamente nos intervalos que eu exigir.

No entanto, desejo poder parar e iniciar a verificação quando o usuário pressionar um botão e, atualmente, estou tendo problemas para parar e reiniciar o Timer e o TimerTask.

Aqui está o meu código

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();
 }

}

Portanto, o Timer e a Tarefa começam bem e a verificação acontece a cada 30 segundos; no entanto, não consigo parar, posso parar o Timer, mas a tarefa ainda ocorre e o scanTask.cancel () também não parece funcionar.

Existe uma maneira melhor de fazer isso? Ou estou faltando alguma coisa nas classes Timer / TimerTask?

questionAnswers(3)

yourAnswerToTheQuestion