0
好的,所以,我想要一個任務運行並在一段時間後繼續運行(如JS'setInterval()
函數,而TimerTask
有一個方法,稱爲scheduleAtFixedRate
,它基本上做同樣的事情然而,沒有明確的機制來pause
或resume
一個TimerTask.
TimerTask暫停/恢復情況下不工作
我因此,閱讀,一旦一個Timer
被取消,去地獄。
我還讀了一個解決方法可以實現。
這裏是我的代碼:
Timer t = new Timer();
t1 = new TimerTask() {
@Override
public void run() {
//Do Something like,
a++;
}
};
t.scheduleAtFixedRate(t1, 0L, 300L); /*Pretty basic till this line. Just a TimerTask ddeclaration and execution via a Timer `t`.*/
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (flag == 1) {
t.scheduleAtFixedRate(t1,0,300);//This call says "TimerTask already scheduled," even though purge removed it.
} else {
t1.cancel(); //cancelling the task so that purge does something.
int a = t.purge();//a is 1. Purge worked. TimerTask was removed from the queue.
Log.d("The number of tasks",a+"");//1
flag = 1;
}
}
});
如何使這項工作?
但是,如果可以使用ScheduleExecutorService,任何人都可以實現此評論中提到的內容嗎? Pause/Resume ScheduleExecutorService
當您的應用程序可見並正在使用時,您的任務是否只需在'onResume()'和'onPause()'之間執行?是否有它需要在後臺線程上運行的原因?因爲你可能想考慮使用'Handler'而不是使用'Timer',所以通常不鼓勵。 –
假設任務正在運行。然後,如果調用onPause,則該任務應該暫停。並保持其位置,而應用程序的其餘部分仍然可用。當onResume被調用時,它應該繼續它正在做的事情。我該如何使用Handler? –
它必須在後臺線程上運行。 –