내비게이션 목적으로 2 초마다 위치 (GPS) 업데이트를 수신하는 전경 서비스 (START_STICKY를 사용하여 "OS에 의해 종료 된"측면의 문제가 없음)가 있습니다. 나는 wockelock을 가져 가지 않습니다. 내 질문은 깊은 수면을 피하기 위해 젖꼭지를 가져 가야합니까? 또는 위치 업데이트가 "실행 중"이면 충분합니까?GPS 위치 및 딥 슬립
답변
Android 코드로 파기 한 후 응답은 다음과 같습니다. 필요하지 않습니다. Android는 onLocationChange가 끝나거나 브로드 캐스트 수신기가 의도를 수신 할 때까지 사용자 (LocationManagerService)의 wakelock을 가져옵니다. 일부 비동기 작업 (인 텐트 서비스 시작, onLocationChange에 일부 코드 게시 등)을 수행하는 경우 자체적으로 부분 웨이크 록을 만들어야합니다.
나는 앱에서 똑같이하고있다. (하지만 수신기를 사용하여 내가 추천하는 위치 업데이트를 받는다. 청취자에게 많은 버그 리포트가있다.) 귀하의 방법은이 문제가 있습니다
- 힘 어쨌든
- 서비스가 결국 잠이됩니다 종료 서비스 - 당신이
올바른 방법은 관찰되지 않았다 와서 궁금해 AlarmManager에 알람을 등록하려면 - 알람이 리시버를 깨울 수 있습니다. onReceive()
에서 자물쇠를 관리 할 WakefulIntentService
을 시작해야합니다.
은 참조 :
- PowerManager.PARTIAL_WAKE_LOCK android
- Android design : background long running service or AlarmManager?
편집 : 2 초 정말 자주입니다. 이것은 배터리를 죽일 것입니다 - 매우 낮은 등급을 기대하십시오 - 또는 간격을 높이십시오.
서비스가 종료 될 수 있지만 끈적 거림이있는 것이 좋습니다. 지금부터 나는 어떤 문제도 보지 못했고 이런 종류의 문제에 대한 어떤보고도받지 못했습니다. 사실 전 별도의 전경 HandlerThread를 사용하고 있으며 Thread.getLooper()와 함께이 스레드를 사용합니다. 위치 수신기를 등록 할 때 사용합니다. – greywolf82
수신자 또는 수신자를 통한 위치 업데이트? –
@Mr_and_Mrs_D 등록 된 수신자를 통해 – greywolf82