2011-09-16 1 views
7

https://github.com/commonsguy/cwac-wakeful 데모에서 OnAlarmReceiver (BroadcastReceiver) onReceive() 메서드는 Alarm에 응답하여 호출됩니다. onReceive() 메소드는 서비스를 시작합니다. 사용 된 인 텐트는 BroadcastReceiver와 Service에서 각각 하나씩 두 가지입니다. 이것은 더 복잡 할 필요가 있습니다. 서비스가 AlamManager로부터 인 텐트를 수신하게하는 것이 아닌가?AlarmManager에서 직접 깨우기 서비스

나는 onReceive()가 실행 중일 때 전화가 잠자기되지 않도록 보장합니다. 즉 잠자기 모드로 포장했습니다. Service 클래스가 유사한 보증을 제공하는지 확실하지 않습니다.

잠에서 깨어나 잠에서 깨어나고 깨우기 잠금을 얻을 때까지 잠자기되지 않도록 알람과 함께 직접 서비스를 시작할 수있는 방법이 있습니까?

답변

14

이것은 복잡 할 필요가 있습니다. 왜 서비스가 AlamManager에서 의도를 수신하지 못하는 것입니까?

Android는 기기가 깨어 있어도 getService()PendingIntent을 호출 할 수있을만큼 충분히 오래 작동하지 않을 것이라고 보증하지 않습니다. 보증은 getBroadcast()PendingIntent의 경우 입니다. Android는 onReceive() 통화 기간 동안 기기가 깨어있는 상태 (WakeLock 경유)를 유지하도록합니다.

나를 신뢰해라, 나는 그것을 건너 뛸 수 있었으면 좋겠다.

+0

그래, 덕분에 응답이 – alexbirkett

+0

오, 고마워. - 나는 분명히 [API 샘플의 간단한 알람 예제에서 이것은 같은 것이 아닌가?] (http://stackoverflow.com/a/) 14094314/281545) - 또는 나는 무엇인가 놓치고 있습니까? –

+1

@Mr_and_Mrs_D : 샘플에 문제가 너무 많아 재미 있지 않습니다. 언젠가는 변화가 생길 수 있도록 문제를 제기하겠습니다. – CommonsWare