В настоящее время я пытаюсь настроить сканирование WiFi в своем приложении для 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();
}
}
Таким образом, таймер и задача запускаются нормально, и сканирование происходит каждые 30 секунд, однако я не могу остановить его, я могу остановить таймер, но задача все еще выполняется, и scanTask.cancel(), похоже, тоже не работает.
Есть лучший способ сделать это? Или я что-то упустил в классах Timer/TimerTask?