您好,我正在处理TCP套接字相关工作。
为了实现每秒读取数据的目标,我使用了以下代码中展示的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);
但是它没有取消计时器。我不知道为什么。
doAsynchronousTask.cancel(true)
。(true
参数表示如果当前正在执行,则对cancel()
的调用可以抢占线程。) - Ben Siver