나는 연속적인 실행을 위해 TimerTask를 예약하는 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