私は、連続して実行するためにTimerTaskをスケジュールするTimerを持っています。私はそれが何度働くか分からない。ユーザーがクリックするとタイマーは停止し、別のタイマーは再び実行されます。すべては、停止するまで動作します。スケジュールを変更すると、タイマーがキャンセルされたか、既にスケジュールされているという例外が表示されます。どうやって止めてもう一度走らせるの?私は考えることができるすべてを試しましたが、それはまだ動作していません。アンドロイドのTimerを再調整する
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");
}
});
}
うーむ、しかし、ハンドラーで繰り返しタスクをスケジュールするにはどうすればよいですか?それはちょうどタスクを遅らせる、それは最後のものを終えた後に新しいものを動かす時間の期間を設定しない。 – user1347945
通常、タスク自体から再度handler.postDelayed()を呼び出します。この定期的なタスクをキャンセルするには、handler.removeCallbacksAndMessagesを呼び出します。 –
hmmmm、okこれは私が考えていることです。タスクが終了する直前にそのタスク自体がhandler.postDelay()を呼び出さないようにします。それは良いデザインですか? – user1347945