마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 6.0 이후의 기기에서 Doze모드 깨우려면?

0 추천
AlarmManager를 통해 주기적으로 알람을 울리게 하고 있습니다.

그러나 마쉬멜로 버전 이후부터는 Doze모드로 빠져버려서 알람이 정확한 시간에 울리지 않습니다.

해결책을 찾아보면 set이 아닌 setAndAllowWhileIdle, setExact 등을 권장해서 적용하였지만, 주기적으로 반복해야하는 알람인 setRepeating에 대해서는 언급이 없더군요

24시간 주기로 계속 반복해야 하는데 setRepeating은 사용하지 않고 Doze를 깨울 방법이 있나요?

아니면 서비스나 리시버에서 요일, 날짜 등이 변경했을 때 이벤트를 등록할 수 있는 리스너함수가 있을까요?
핸디 (1,840 포인트) 님이 2016년 9월 29일 질문

1개의 답변

0 추천
안드로이드에서 6.0부터 3rd party 어플리케이션에 의한 배터리 이슈를 해결하기 위한 대응을 하기 위한 정책으로 Doze를 넣은것인데 이것을 깨울 수 있다면 안드로이드 시스템 입장에서는 문제가 될수 있겠지요.

원래 기존에는 wakelock 설정으로 딥슬립 상태를 깨울 수가 있었지만 마쉬멜로우 부터는 wakelock으로도 Doze를 꺠울수는 없습니다. 다만 시스템이 Doze로부터 주기적으로 꺠우는 시점이 있는데 이에 대해 대응하는 식으로 개발을 하셔야지 Doze 자체를 깨우는 것은 쉽지 않을 겁니다.
Development Guy (70,570 포인트) 님이 2016년 9월 30일 답변
setExactAndAllowWhileIdle로 해결하였습니다
이거는 Doze모드에도 작동하는 메소드네요
...