여러 타이머가있는 앱이 있습니다. 필자가 시작하면 이클립스의 Logcat에서 카운트 다운되는 것을 볼 수있다. 나는 돌아 가기 버튼을 누르면 때CountDownTimer가 백그라운드에서 계속 체크 - onResume에서 카운트를 어떻게 검색합니까?
은 onStop()
는합니다 (onTick()
멀리 진드기에 계속) 응용 프로그램에서 호출하지만 타이머가 로그 캣에서 카운트 다운 계속됩니다.
onResume()
이 호출 될 때 내가 원하는 것은 타이머를 가져 와서 계속 카운트 다운하고 계속 진행하고 싶습니다. 이것이 가능한가?
여기가 카운트 다운을 시작하는 내 버튼입니다 :
//Button1 Timer
final CountDown button1 = new CountDown(420000,1000,bButton1);
bButton1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
button1.start();
long currentTime = System.currentTimeMillis();
//Set start time for calculating time elapsed if needed
saveTime("START_TIME_BUTTON1", currentTime);
}
});
//Button2 Timer
final CountDown button2 = new CountDown(360000,1000,bButton2);
bButton2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
button2.start();
long currentTime = System.currentTimeMillis();
//Set start time for calculating time elapsed if needed
saveTime("START_TIME", currentTime);
}
});
내 onResume()
은 다음과 같습니다
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
//Reset the timers on appropriate buttons if there was something running
//If nothing was running or timer finished - have button in default state
//See if there was a button1 timer running - if not, it will be 0
SharedPreferences start = PreferenceManager.getDefaultSharedPreferences(this);
long startTime = start.getLong("START_TIME_BUTTON1", 0);
long timeElapsed = (System.currentTimeMillis()-startTime);
long timeRemaining = (420000 - timeElapsed);
if (timeRemaining == 0) {
} else if (timeRemaining > 0) {
final CountDown button1Timer = new CountDown(timeRemaining,1000,bButton1);
button1Timer.start();
long currentTime = System.currentTimeMillis();
saveTime("START_TIME", currentTime);
} else {
}
}
이 - onResume()
은 첫 번째가 될 또 다른 타이머 권리를 시작, 텍스트에 해당 숫자가 표시되고 onTick()
메소드를 사용하여 계속 카운트 다운됩니다. 하지만 이제 logcat은 단 하나 대신 카운트 다운 2 타이머를 보여줍니다!
궁극적으로 나는 다른 타이머를 시작하고 싶지 않습니다. 단지 카운트 다운에있는 첫 번째 타이머를 시작하고 onTick()
디스플레이를 적절하게 가지고 싶습니다. 그렇게 할 수있는 방법이 있습니까? 서비스가 내가 원하는 것일까? 백그라운드에서 계속 체크 한 이후로 이미 서비스입니까?
나는이 일을 수행하는 것이 가장 좋은 방법에 대해 약간 혼란스러워합니다.
감사합니다. 이것의 시선을 사로 잡는다 - 나는 아직도 당신이 나의 코드에서 상상할 수있는 것처럼 이것에 대해 아주 새로운 것이다. 이걸 내가 원하는대로 할려고 노력하는거야! 건배! – Hanny
또한 - 매우 멍청한 질문이지만 - .cancel()을 어떻게 호출합니까? 그 타이머에? button1.cancel(); onResume 메소드에 추가하면 중단됩니다. 이 작업을 수행하는 방법을 잘 모름 ... – Hanny
CountDown 클래스가 CountDownTimer를 확장합니까? 그렇다면 오류를 게시 할 수 있습니까? – AngusMorton