Etkilendiğimi nasıl söyleyebilirim?
Bu, muhtemelen bu konuyla aşina olmayanlara ilk soru. Zencefilli kurabiye (Android 2.3) ve üzeri ile, anlamanıza yardımcı olacak bir hizmetiniz var: pil istatistikleri. Üreticiler farklı noktalara yerleştirme eğiliminde olsalar da, çoğunlukla Ayarlar → Telefon hakkında → Batarya veya benzerleri bölümünde bulunur ve bataryanızın çoğunu kullanan uygulamaların bir listesini gösterir. Bunun üzerine küçük bir grafik. Ona dokunun ve sizi buna benzer bir ekrana getirir:

Android 2.3'de pil istatistiklerinin ekran görüntüsü
Bu sorunu gösteren cihazlarımdan birinin ekran görüntüsünü seçtim. Alttaki iki mavi çubuğa bakarak ("Aktiv" = Cihaz uyanık (aktif), "Bildschirm a" = "Ekran açık"), "Aktiv" üzerindeki en sağdaki mavi çubuk WakeLock'u gösteriyor: Cihaz buna rağmen meşgul Ekranın kapalı olduğu gerçeği. Bu sayede bir WakeLock'a sahip olduğumuzdan emin olabiliriz - ama kimin neden verdiğini söyleyemeyiz.
Cihazınız bu ekranı sunmuyorsa (veya alttaki çubuklar: Android 4.0.3'u çalıştıran örneğin LG 4.0.3 ve 4 Android bu barları kestiğini keşfettim ), örneğin GSam Pil Monitörü kullanarak bunları bulabilirsiniz :

GSam Pil Monitörü'nden benzer bilgiler - burada belirtilen "mavi çubuklar" sarı / turuncu
WakeLock'a ne neden oldu?
Ne yazık ki, bu soru önceden yüklenmiş uygulamalar kullanılarak cevaplanamaz (bazı Özel ROM'lar hariç). Ancak yapabilen araçlar var. Bunun için en iyi bilinen aday BetterBatteryStats ve bize kısmi uyanıklıklar bölümünde nedenini gösteriyor :

BetterBatteryStats'in ekran görüntüleri
İlk örnek 2'de (uygulamanın playstore sayfasından alınmıştır) WakeLocks'ın çoğuna neden olan olay istenen bir olaydı: Müzik dinlerken çalmanın durdurulmasını istemiyoruz. Bu yüzden ikinci örnek 3 (cihazlarımdan birinde gerçek bir davadan alınmış) daha iyi olabilir: en üstteki 3 olay, IMAP push servisini aktif tutmak için WakeLock'a ihtiyaç duyan aynı uygulamadan kaynaklanıyor.
BetterBatteryStats'a bir alternatif olarak , UzumApps'in cevabında belirtilen Wakelock Dedektörü uygulamasına göz atın - ki bu özellikle teknik olmayan kişiler için kullanımı daha kolay:

Wakelock Detector - Büyütmek için resme tıklayın. (Kaynak: Google Play )
Ne yapılabilir?
Durum önceki bölümdeki ikinci örnekte olduğu gibi netse, eylem oldukça açıktır - en azından benim durumumda: bir posta geldiğinde derhal bilgilendirilmeme gerek yok ; 30 dakikalık bir gecikme kesinlikle kabul edilebilir. Bu yüzden posta uygulamasına girdim, IMAP Push'u devre dışı bıraktım (ayrıca bkz: Push Email ) ve bunun yerine 30 dakikalık bir anket aralığına geçtim. WakeLocks tamamen ortadan kalkmadı, ama gözle görülür bir şekilde düştü - pil ömrü gözle görülür şekilde arttı.
Sonra sorunun kendisinde belirtilen durum var: WakeLock'ı serbest bırakmayan kötü davranış gösteren bir uygulama. Geliştirmeden bulgularınızla yüzleşin ve bir düzeltme isteyin. O sunarsa: problem çözüldü. Değilse: Neredeyse her zaman kullanılabilir alternatif bir uygulama var.
Ya Android Sisteminin kendisi ise?
Evet, bazen öyle gözüküyor: Bazı Android servisleri tarafından tüketilen% 98 veya daha fazla. Oh,% 98 ise, çoğu durumda aday LocationManagerService olarak adlandırılır . Kötü adam bize casusluk mu yapıyor? Şart değil. Bu özel durumda, listelenen "kötü adam" suçlu bile değil - en azından doğrudan değil. Burada çok sık güncel konum talep eden başka bir uygulama. Setera.org'da bununla ilgili harika bir makale var: Android LocationManagerService pil tahliyesini saptama . Özet vermek gerekirse: Android kullanıyordumpsys
bir sistem durumuna dökmek için özellik (kök gerektirir!) ve LocationManagerService için kurulan dinleyicileri araştırmanızı sağlar. Konfigürasyonlarına daha yakından bakıldığında, konum bilgisi için sürekli olarak "çekiçlediğini" gösteriyor (bazıları bunu kalıcı olarak, yani ara vermeden yapıyor). Uygulamanın kimliği listelenirken ve uygulamaların teknik adıyla birlikte çöplükteki başka bir yerde bile tanımlayabilir ve uygun işlemleri yapabilirsiniz.
Peki ya UFO'lar?
Ne yazık ki, var: Bir WakeLock'u kaydeden Uygulamalar - ve ardından bırakmadan çıkıldı. Geride kalanlar * Kullanılmayan F *** Eski Ürünler * - Uyandırmayan kullanım için tutulan. Dolayısıyla, uygulamayı ön plana çıkarmanın ve yeniden yapılandırmanın ya da WakeLocks'unu serbest bırakmanın hiçbir yolu yoktur.
Burada benim için bilinen tek çözüm yeniden başlatma - ve daha iyi bir çözüm istiyorum. Tabii ki, suçlu uygulamayı biliyorsanız, bununla ilgili adımlar yukarıdakiyle aynıdır: dev'i bilgilendirin, düzeltin ya da uygulamayı değiştirin. Ama şu anki WakeLock'tan kurtulmak hakkında ? Belki başka biri yeniden başlatmaya daha iyi bir alternatif sağlayabilir?
Önerilen başka okumalar var mı?
Elbette. Şimdilik bir tane, daha sonra ekleyebilirim:
/sys/power/wake_lock
, ancak kullanarak wakelock'u "yanlış" şekilde yarattıysanız , ancak PowerManager ve PowerManager.WakeLock kullanarak "doğru" şekilde yaptıysanız, hizmetin gerçek wakelock'u tutacağı izlenimini edindim. ve senin sürecin öldürülse bile onu serbest bırak ...