嗨,我正在使用TCP套接字。我可以每1秒钟读取一次数据。为了实现它,我使用了TimerTask,如下面的代码所示。
Handler handler = new Handler();
Timer timer = new Timer();
TimerTask doAsynchronousTask = new TimerTask() {
@Override
public void run() {
finalizer = new Runnable() {
public void run() {
try {
if (navBool) {
runOnUiThread(new Runnable() {
public void run() {
new RetriveStock().execute(); // AsyncTask.
}
});
}
} catch (Exception e) {
}
}
};
handler.post(finalizer);
}
};
timer.schedule(doAsynchronousTask, 0, 1000);
为了取消此计时器,我将代码用作
timer.cancel();
timer = null;
handler.removeCallbacks(finalizer);
但这不是取消计时器。我不知道为什么。
timer.cancel()
您应该取消分配给该计时器的任务(doAsynchronousTask
对于您的情况),而不是调用。由于可以将多个TimerTasks分配给一个计时器,因此调用timer.cancel()
不会干扰当前正在运行的任务。
public void cancel()
终止此计时器,放弃任何当前计划的任务。不干扰当前正在执行的任务(如果存在)。计时器终止后,其执行线程将正常终止,并且无法在其上安排更多任务。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句