В настоящее время я пытаюсь настроить сканирование 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 () тоже не работает. 1010 *
Есть ли лучший способ сделать это? Или я что-то упускаю в классах Timer / TimerTask?