我想知道TimerTask是如何與線程一起工作的。Android上的TimerTask如何管理線程?
例如,我有一個執行TimerTask的代碼,它有一個將在UI線程上運行的'run'方法。
class looper extends TimerTask {
public looper() {
}
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
timer.schedule(new looper(), new Date(new Date().getTime() + 100));
}
});
}
}
和計時器應該像這樣開頭:
timer = new Timer();
timer.schedule(new looper(), new Date());
將一個TimerTask創建一個新的線程?如果是這樣,runOnUiThread
將如何工作?它會移動代碼到UI線程嗎?我試圖消除需要再次調用TimerTask(timer.schedule
),只是使用run
內的無限循環進行計算 - 但這會阻止UI線程和應用程序不會響應。
P.S - 我必須讓代碼在UI線程上運行,因爲它必須更新UI。
那麼,這是怎麼回事?
我沒有發佈完整的代碼,但我需要控制下一個時間任務的運行時間 - 這就是爲什麼我再次設置計時器的原因。 – Roman
有沒有辦法避免在新線程和UI線程之間進行上下文切換? – Roman
我已經更新了答案。 – AlexBcn