2012-09-06 4 views
3

Timer을 시작하는 함수로 앱을 만들고 있습니다. 그러나 나는 매우 심각한 문제에 직면 해있다.CountDownTimer의 연속 함수

10 minutes의 타이머를 CountDownTimer을 사용하여 살펴 봤다고 가정 해 보겠습니다. 10 분이 지나면 삐 소리가납니다. 이제 홈 버튼을 눌러 응용 프로그램을 백그라운드로 실행한다고 가정합니다. CountDownTimer 속성은 countDown을 계속하므로 10 분 후에 beep이 표시됩니다.

그러나 화면 시간이 초과되지 않은 경우 이런 일이 발생합니다. screen time is out이고 화면이 검은 색/검은 색으로 계속되면 타이머가 계속되지만 끝날 때 앱이 일시 중지 상태 인 것처럼 실행되지 않고 모바일에서 아무 버튼이나 클릭하여 모바일을 활성화하면 응용 프로그램이 배경을 다시 ..

나는 이것을 중지하고 앱이 화면 시간조차도 실행되기를 원합니다.

어떻게 가능합니까?

답변

4

타이머를 계속 실행하려면 CPU를 계속 실행하려면 partial wakelock을 가져야합니다. 그렇지 않으면 장치가 절전 상태가됩니다.

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); 
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "Countdown"); 
wl.acquire(); 

마침내 출시 할 수 있습니다.

+0

나는 이것이 낡은 스레드라는 것을 알고 있지만 비슷한 경우를 시도하고 있었고 배경에 응용 프로그램을 배치하고 다른 응용 프로그램을 연 다음 화면을 전환하면 타이머가 작동을 멈추는 경우가 있습니다. . PARTIAL_WAKE_LOCK을 획득했지만 OnPause와 OnStop이 모두 발생하고 CountDownTimer가 중지됩니다. 내가 감시해야 할 것이 있다면? – GrantVS

+0

어디에서 wakelock을 해제 하시겠습니까? 당신이 wakelock을 취득하면 onpause와 onstop은 타격을 멈추지 않을 것입니다. – nandeesh

+0

wakelock onPause와 onFinish를 해제하십시오. – GrantVS