나는 게임을 만들고 타이머를 사용자에게 표시하고 시간이 0 일 때 작업을 수행하는 onCreate 메서드를 사용합니다. 내 방식은 올바르게 작동하지만 작성한 이후로 작동합니다. onCreate 시간이 계속해서 카운트 다운되며 화면 등을 회전하면 타이머 초가 재설정됩니다. 이 문제가 발생하는 이유는 알지만 응용 프로그램이 일시 중지되었을 때 응용 프로그램을 중단하고 응용 프로그램이 계속 진행될 때 중단 할 수있는 방법을 찾지 못했습니다. 여기 내 코드는인터럽트에 countTimer() 저장 (안드로이드)
new CountDownTimer(15000, 1000) {
public void onTick(long millisUntilFinished) {
question.setText("seconds remaining: " + millisUntilFinished/1000);
}
public void onFinish() {
question.setText("done!");
Intent i2 = new Intent(getApplicationContext(), CategoryActivity.class);
startActivity(i2);
}
}.start();
내가 savedInstanceState에 milisUntilFinished과 savedInstanceState에 따라 타이머 시작을 저장해야하거나 더 쉬운 해결책은
편집이 : 그래서 내가 물어 봤어요 물건을 반영하려면 코드를 업데이트 . 이 방법 전화가 회전 할 때 타이머의 마지막 상태를 저장할 수 있지만 메뉴를 열 때 타이머는 여전히 멈추지 않는다 (응용 프로그램을 일시 중지합니다.)
if(savedInstanceState!=null){
seconds = savedInstanceState.getInt("seconds");
new CountDownTimer(seconds * 1000, 1000) {
public void onTick(long millisUntilFinished) {
seconds = (int) millisUntilFinished;
question.setText("seconds remaining: " + millisUntilFinished/1000);
}
public void onFinish() {
question.setText("done!");
Intent i2 = new Intent(getApplicationContext(), CategoryActivity.class);
startActivity(i2);
}
}.start();
}else {
new CountDownTimer(15000, 1000) {
public void onTick(long millisUntilFinished) {
seconds = (int) millisUntilFinished;
question.setText("seconds remaining: " + millisUntilFinished/1000);
}
public void onFinish() {
question.setText("done!");
Intent i2 = new Intent(getApplicationContext(), CategoryActivity.class);
startActivity(i2);
}
}.start();
}
onCreate에서 onResume으로 countTimer를 배치했을 때 작동했습니다. 나는 이것을 대답으로 받아 들인다. – Freshia