【发布时间】:2011-01-10 19:55:33
【问题描述】:
我目前正尝试在我的 Android 应用程序中设置 WiFi 扫描,每 30 秒扫描一次 WiFi 接入点。
我已使用 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 类中遗漏了什么?
【问题讨论】:
标签: android timer scheduled-tasks