Bagaimana saya bisa tahu saya terpengaruh?
Ini mungkin pertanyaan pertama bagi mereka yang tidak terbiasa dengan topik ini. Dengan Gingerbread (Android 2.3) dan di atasnya, Anda memiliki layanan yang membantu Anda mengetahui: statistik baterai. Meskipun produsen cenderung menempatkannya di titik yang berbeda, sebagian besar ditemukan di Pengaturan → Tentang telepon → Baterai atau yang serupa, dan menunjukkan daftar aplikasi yang telah menggunakan sebagian besar baterai Anda. Di atas itu adalah grafik kecil. Ketuk itu, dan itu membawa Anda ke layar yang mirip dengan ini:
Tangkapan layar statistik baterai di Android 2.3
Saya memilih tangkapan layar dari salah satu perangkat saya yang menggambarkan masalah ini. Melihat dua bilah biru bawah ("Aktiv" = Perangkat tetap terjaga (aktif), "Bildschirm an" = "Layar menyala"), bilah biru paling kanan pada "Aktiv" menunjukkan WakeLock: Perangkat tetap sibuk meskipun fakta layar dimatikan. Jadi dengan ini kita bisa sangat yakin kita punya WakeLock - tetapi kita tidak tahu siapa yang menyebabkannya.
Jika perangkat Anda tidak menawarkan layar ini (atau bilah di bagian bawah: Saya baru saja menemukan misalnya LG Optimus 4X yang menjalankan Android 4.0.3 telah memotong bilah ini), Anda dapat menemukannya misalnya menggunakan Monitor Baterai GSam :
Informasi serupa dari Monitor Baterai GSam - di sini "bilah biru" berwarna kuning / oranye
Apa yang menyebabkan WakeLock?
Sayangnya, pertanyaan ini tidak dapat dijawab dengan menggunakan aplikasi yang sudah diinstal sebelumnya (kecuali, mungkin, beberapa ROM Kustom). Tetapi ada alat yang tersedia yang bisa. Kandidat yang paling dikenal untuk hal ini adalah BetterBatteryStats , dan menunjukkan penyebabnya di bagian wakelocks parsial :
Screenshot dari BetterBatteryStats
Pada contoh pertama 2 (diambil dari halaman playstore aplikasi), acara yang menyebabkan sebagian besar WakeLock adalah yang diinginkan: Kami tidak ingin pemutaran dihentikan saat mendengarkan musik. Jadi contoh kedua 3 (diambil dari kasing nyata di salah satu perangkat saya) mungkin terbukti lebih baik: 3 peristiwa teratas disebabkan oleh aplikasi yang sama, yang membutuhkan WakeLock untuk menjaga layanan push IMAP aktif.
Untuk alternatif dari BetterBatteryStats , periksa aplikasi Wakelock Detector yang disebutkan dalam jawaban UzumApps ' - yang tampaknya lebih mudah ditangani terutama untuk non-teknisi:
Wakelock Detector - Klik gambar untuk memperbesar. (Sumber: Google Play )
Apa yang bisa dilakukan?
Jika kasusnya sejelas pada contoh kedua di bagian sebelumnya, tindakannya cukup jelas - setidaknya dalam kasus saya: Saya tidak perlu segera diberitahu ketika email datang; keterlambatan 30 menit benar-benar dapat diterima. Jadi saya masuk ke aplikasi email, menonaktifkan IMAP Push (lihat juga: Push Email ), dan sebagai gantinya beralih ke interval jajak pendapat 30 menit. WakeLocks tidak sepenuhnya hilang, tetapi turun drastis - daya tahan baterai meningkat secara nyata.
Lalu ada kasus yang disebutkan dalam pertanyaan itu sendiri: Aplikasi berperilaku buruk tidak melepaskan WakeLock-nya. Hadapi dev dengan temuan Anda dan minta diperbaiki. Jika dia memberikan: masalah terpecahkan. Jika tidak: Hampir selalu ada aplikasi alternatif yang tersedia.
Bagaimana jika itu adalah Sistem Android itu sendiri?
Ya, terkadang hanya seperti itu: 98% atau lebih dikonsumsi oleh beberapa layanan Android. Oh, jika 98%, dalam banyak kasus kandidat dinamai LocationManagerService . Orang jahat memata-matai kita? Belum tentu. Dalam kasus khusus ini, "orang jahat" yang terdaftar bahkan tidak bersalah - setidaknya tidak secara langsung. Ini dia aplikasi lain yang terlalu sering meminta lokasi saat ini. Ada artikel yang bagus di Setera.org tentang ini: Menentukan lokasi LocationManagerService baterai Android dengan tepat . Untuk memberikan abstrak: Ini menggunakan Androiddumpsys
fitur (memerlukan root!) untuk membuang status sistem, dan memungkinkan Anda menyelidiki pendengar yang dibuat untuk LocationManagerService. Melihat lebih dekat pada konfigurasi mereka menunjukkan yang terus-menerus "memalu" untuk info lokasi (beberapa melakukannya secara permanen, yaitu tanpa istirahat). Ketika ID aplikasi terdaftar, dan di tempat lain di tempat sampah bahkan bersama dengan nama teknis aplikasi, Anda masih dapat mengidentifikasi dan mengambil tindakan yang sesuai.
Dan bagaimana dengan UFO?
Sayangnya, ada seperti: Aplikasi yang mendaftarkan WakeLock - dan kemudian keluar tanpa melepaskannya. Apa yang tersisa adalah * Obliolet yang Tidak Digunakan * - WakeLock tidak digunakan. Jadi tidak ada cara untuk hanya membawa aplikasi ke latar depan dan mengkonfigurasi ulang, atau membuatnya melepaskan WakeLocks-nya.
Di sini satu-satunya solusi yang saya kenal adalah reboot - dan saya ingin memiliki solusi yang lebih baik. Tentu saja, jika Anda mengetahui aplikasi yang bersalah, langkah-langkahnya sama seperti di atas: beri tahu dev, dapatkan perbaikan - atau ganti aplikasi. Tetapi tentang menyingkirkan WakeLock saat ini ? Mungkin orang lain bisa memberikan alternatif yang lebih baik untuk reboot?
Apakah ada beberapa bacaan lanjutan yang disarankan?
Yakin. Satu untuk saat ini, saya dapat menambahkan lebih banyak nanti:
/sys/power/wake_lock
, tetapi bahwa jika Anda melakukannya dengan cara "benar" menggunakan PowerManager dan PowerManager.WakeLock, layanan keduanya akan memegang wakelock asli dan lepaskan bahkan jika proses Anda terbunuh ...