영향을 받았다고 어떻게 알 수 있습니까?
이것은 아마도이 주제에 익숙하지 않은 사람들에게 첫 번째 질문 일 것입니다. Gingerbread (Android 2.3) 이상에서는 배터리 통계를 파악하는 데 도움이되는 서비스가 제공됩니다. 제조업체는 다른 지점에 배치하는 경향이 있지만 대부분 설정 → 전화 정보 → 배터리 또는 유사 항목에 있으며 대부분의 배터리를 사용한 앱 목록이 표시됩니다. 그 위에 작은 그래프가 있습니다. 그것을 누르면 다음과 비슷한 화면이 나타납니다.
Android 2.3의 배터리 통계 스크린 샷
내 기기 중 하나에서 문제를 보여주는 스크린 샷을 선택했습니다. 아래쪽 두 개의 파란색 막대 ( "Aktiv"= 장치가 활성 상태로 유지됨, "Bildschirm an"= "Screen on")를 보면 "Aktiv"의 가장 오른쪽에있는 파란색 막대가 WakeLock을 나타냅니다. 화면이 꺼졌다는 사실. 따라서 이것으로 WakeLock이 있는지 확실하게 알 수 있지만 누가 원인을 알 수는 없습니다.
기기에서이 화면을 제공하지 않거나 하단의 막대가 방금 발견되었습니다 (예 : Android 4.0.3을 실행 하는 LG Optimus 4X 에서 이러한 막대를 잘라낸 경우). GSam 배터리 모니터를 사용하여 찾을 수 있습니다 .
GSam 배터리 모니터의 유사한 정보 -여기 언급 된 "파란색 막대"는 노랑 / 주황
WakeLock의 원인은 무엇입니까?
불행히도,이 질문은 사전 설치된 앱을 사용하여 대답 할 수 없습니다 (일부 사용자 지정 ROM 제외). 그러나 가능한 도구가 있습니다. 이에 대한 가장 잘 알려진 후보는 BetterBatteryStats 이며 부분 웨이크 록 섹션 에서 원인을 보여줍니다 .
BetterBatteryStats 스크린 샷
첫 번째 예 2 (앱의 Playstore 페이지에서 가져옴)에서 WakeLocks를 대부분 발생시키는 이벤트는 원하는 것이 었습니다. 음악을 듣는 동안 재생이 중단되는 것을 원하지 않습니다. 따라서 두 번째 예제 3 (내 장치 중 하나에서 실제 사례에서 가져옴)은 더 나은 것으로 입증 될 수 있습니다. 최상위 3 개 이벤트는 동일한 앱으로 인해 발생하며, IMAP 푸시 서비스를 활성화하려면 WakeLock이 필요했습니다.
BetterBatteryStats 의 대안으로 UzumApps 의 답변에 언급 된 Wakelock Detector 앱을 확인하십시오 .
Wakelock Detector-이미지를 클릭하면 확대됩니다. (출처 : Google Play )
무엇을 할 수 있습니까?
이전 섹션의 두 번째 예에서와 같이 사건이 분명하다면, 그 행동은 분명합니다. 적어도 제 경우에는 : 우편물이 도착했을 때 즉시 통보받을 필요가 없습니다 . 30 분의 지연은 절대적으로 허용됩니다. 그래서 메일 앱으로 이동하여 IMAP 푸시를 비활성화하고 ( 푸쉬 이메일 참조 ) 30 분 폴링 간격으로 전환했습니다. WakeLocks는 완전히 사라지지 않았지만 현저하게 떨어졌습니다. 배터리 수명이 눈에 띄게 향상되었습니다.
그런 다음 질문 자체에 언급 된 경우가 있습니다 : WakeLock을 해제하지 않는 나쁜 행동 앱. 발견 한 내용을 개발자에게보고 수정을 요청하십시오. 그가 전달한다면 : 문제 해결. 그렇지 않은 경우 : 거의 항상 대체 앱을 사용할 수 있습니다.
안드로이드 시스템 자체라면 어떨까요?
예, 때로는 Android 서비스에서 98 % 이상을 소비하는 것처럼 보입니다. 아, 98 %라면 대부분의 경우 후보의 이름은 LocationManagerService 입니다. 우리를 감시하는 나쁜 사람? 반드시 그런 것은 아닙니다. 이 특별한 경우에, "나쁜 녀석"은 적어도 직접적으로는 유죄가 아닙니다. 현재 위치를 너무 자주 요청하는 다른 앱입니다. Setera.org에는 이에 대한 훌륭한 기사가 있습니다 : Pinpointing Android LocationManagerService battery drain . 초록을 주려면 : Android를 사용합니다.dumpsys
기능 (루트 필요)은 시스템 상태를 덤프하며 LocationManagerService에 대해 설정된 리스너를 조사 할 수 있습니다. 위치 정보를 위해 지속적으로 "해머링"하는 구성 쇼를 자세히 살펴보십시오 (일부는 영구적으로, 즉 중단하지 않음). 앱의 ID가 함께 나열되고 앱의 기술적 이름과 함께 덤프의 다른 위치에도 여전히 식별되어 적절한 조치를 취할 수 있습니다.
그리고 UFO는 어떻습니까?
안타깝게도 WakeLock을 등록한 후 릴리스하지 않고 종료 한 앱이 있습니다. 남은 것은 * 사용하지 않은 F *** ing Obsoletes *-WakeLocks는 사용하지 않습니다. 따라서 앱을 포 그라운드로 가져와 재구성하거나 WakeLocks를 해제하도록하는 방법은 없습니다.
여기에 나에게 알려진 유일한 솔루션은 재부팅입니다. 더 나은 솔루션을 원합니다. 물론 유죄 앱을 알고 있다면 위와 동일합니다. 개발자에게 알리거나 수정하거나 앱을 교체하십시오. 그러나 현재 WakeLock을 제거하는 것에 대해 ? 다른 사람이 재부팅에 대한 더 나은 대안을 제공 할 수 있습니까?
권장되는 추가 판독 값이 있습니까?
확실한. 지금은 나중에 더 추가 할 수 있습니다.
/sys/power/wake_lock
이지만 PowerManager와 PowerManager.WakeLock을 사용하여 "올바른"방법을 사용하면 서비스가 실제 wakelock을 유지한다는 인상을 받았습니다. 당신의 프로세스가 죽었더라도 그것을 릴리스 ...