无法在计时器中检查布尔值的状态

时间:2016-05-03 12:00:26

标签: android android-studio

我正在使用使用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);

2 个答案:

答案 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是一个全局变量,一切都会好的。