我想要有一個計時器爲連續執行計劃一個TimerTask。我不知道它會工作多少次。在用戶單擊時,計時器將停止,並在另一個計時器上再次運行。一切工作,直到停止,當我重新安排,我收到異常說,定時器被取消或已經安排。我如何讓它停止並再次運行?我試過了我能想到的一切,但仍然無法正常工作。在android中重新安排定時器
這是我想要的最新代碼:
Timer myTimer;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
cameraTimedTask = new camera(this);
myTimer = new Timer("cameraTimer");
Button b=(Button)findViewById(R.id.b);
b.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
myTimer.purge();
myTimer.scheduleAtFixedRate(cameraTimedTask, 1000, 5000);
}
});
Button bb=(Button)findViewById(R.id.button);
bb.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
myTimer.cancel();
myTimer.purge();
myTimer = null;
myTimer = new Timer("camerasTimer");
Log.i("Check","[main]"+" timer stopped");
}
});
}
hmmmm,但我如何安排處理程序中的重複任務?它只是推遲了一項任務,它沒有設定一段時間在完成最後一項之後運行一個新的任務。 – user1347945
他們通常從任務本身再次調用handler.postDelayed()。要取消這個週期性的任務,他們調用handler.removeCallbacksAndMessages –
hmmmm,那麼這就是我在想什麼,我會避免任務本身在它結束之前調用handler.postDelay()。這是一個很好的設計? – user1347945