2011-02-26 10 views
0

주어진 시간 동안 내 휴대 전화를 음소거해야하는 간단한 응용 프로그램을 작성하려고합니다. 내 첫 번째 Android 앱이지만 여러 시간 동안 읽고 나면 거의 완성 된 것 같습니다. 하지만 여전히 해결할 수없는 문제가 하나 있습니다.휴대 전화가 대기 모드 일 때 Handler.postDelayed가 호출되지 않음

GUI를 표시하는 활동을 사용하고 있습니다. 그것은 시작과 끝 시간, 그리고 필요한 모든 것을 설정하는 버튼이 있습니다. 사용자가 모든 매개 변수를 입력하면 매개 변수가 서비스로 전달됩니다. 이 서비스는 핸들러 객체를 사용하여 2 개의 콜백을 등록합니다 (Handler.postDelayed를 사용하여). 하나는 시작 음소거이고 다른 하나는 종료 음소거입니다 (SetMuteIntervall에서). 첫 번째 테스트가 작동하는 것처럼 보였지만 30 분 동안 음소거를 시도하면 소리가 끊기지 않습니다. 나는 그것이 휴대 전화가 대기 모드에 있거나 대기 모드에 있었다는 사실과 관련이 있다고 생각합니다. 나는 또한 Handler.postAt()를 사용하려고 시도했으나 작동하지 않았다 (그리고 가동 시간에 비례하는 시간이 다소 혼란 스러웠다).

그래서 전화가 대기 상태인지 여부에 관계없이 콜백이 호출되도록하려면 어떻게해야합니까?

여기 내 프로그램의 소스입니다 :

http://pastebin.com/XAgCeAq9

http://pastebin.com/33nepFV5

답변

1

시도는 미래의 어떤 행동을 계획하기위한 알람 관리기를 사용합니다. AlarmManager는 대기 모드 의존성이 아니며 장치가 절전 모드 일 때도 작동합니다.

실이 실제로 중단 된 후 전화기가 대기 모드에 있습니다. 그래도 스레드를 사용하고 싶다면 WakeLock을 사용하여 CPU가 대기 모드로 전환되는 것을 방지 할 수 있지만 (여전히 화면을 끌 수 있음)이 경우에는 최선의 방법이 아닙니다.

관련 문제