我正在使用使用wifiManager.reconnect();
的wifi功能
这会返回一个布尔状态,我希望监视并调用回调函数一旦它为真,
但是当我做计时器时,它说变量需要是最终的,这将阻止我为什么这样做的全部目的,
我做错了什么?
这是代码:
isConnected = wifiManager.reconnect();
然后在我的runnable中我正在做:
class MyTimerTask extends TimerTask {
public void run() {
// ERROR
//CHANGE SOMETHING HERE
Log.d ("myLogs", "Loop entered !!!");
if (isConnected == true) {
myCallback.wifiConnectionEsteblishedCallable(true);
}
System.out.println("");
}
}
MyTimerTask myTask = new MyTimerTask();
Timer myTimer = new Timer();
myTimer.schedule(myTask, 5000, 3000);
答案 0 :(得分:1)
您可以在任务中添加构造函数并将布尔标志传递给TimeTask
,因此无需将其声明为 final :
class MyTimerTask extends TimerTask {
private boolean isConnected;
public MyTimerTask (boolean isConnected) {
this.isConnected = isConnected;
}
public void run() {
// ERROR
//CHANGE SOMETHING HERE
Log.d ("myLogs", "Loop entered !!!");
if (isConnected == true) {
myCallback.wifiConnectionEsteblishedCallable(true);
}
System.out.println("");
}
}
这样称呼:
MyTimerTask myTask = new MyTimerTask(isConnected);
Timer myTimer = new Timer();
myTimer.schedule(myTask, 5000, 3000);
答案 1 :(得分:0)
如果isConnected是一个全局变量,一切都会好的。