Berita Produk
Mengoptimalkan baterai aplikasi menggunakan metrik penguncian layar saat aktif Android vitals
Waktu baca: 7 menit
Masa pakai baterai adalah aspek penting dari pengalaman pengguna dan kunci aktif sebagian berperan besar. Apakah Anda menggunakannya secara berlebihan? Dalam postingan blog ini, kita akan mempelajari apa itu kunci tetap aktif, beberapa praktik terbaik untuk menggunakannya, dan cara Anda dapat lebih memahami perilaku aplikasi Anda sendiri dengan metrik Konsol Play.
Penggunaan penguncian layar saat aktif parsial yang berlebihan di Android Vitals
Konsol Play kini memantau baterai cepat habis, dengan berfokus pada penggunaan penguncian layar saat aktif parsial yang berlebihan, sebagai indikator performa utama.
Fitur ini meningkatkan pentingnya efisiensi baterai bersama indikator stabilitas metrik inti yang ada: error yang dirasakan pengguna dan ANR yang berlebihan. Kami telah menentukan batas perilaku buruk untuk penguncian layar saat aktif berlebihan. Mulai 1 Maret 2026, jika judul Anda tidak memenuhi nilai minimum kualitas ini, kami dapat mengecualikan judul tersebut dari platform penemuan yang menonjol seperti rekomendasi. Dalam beberapa kasus, kami dapat menampilkan peringatan di listingan Play Store Anda untuk menunjukkan kepada pengguna bahwa aplikasi Anda dapat menyebabkan pengurasan baterai yang berlebihan.
Peringatan penguncian layar saat aktif berlebihan di ringkasan Android vitals.
Untuk perangkat seluler, metrik penting Android berlaku untuk fitur penguncian layar saat aktif yang tidak dikecualikan dan diperoleh saat layar nonaktif dan aplikasi berada di latar belakang atau menjalankan layanan latar depan. Android vitals menganggap penggunaan penguncian layar saat aktif parsial berlebihan jika:
- Penguncian layar saat aktif dipertahankan selama minimal dua jam dalam periode 24 jam.
- Error ini memengaruhi lebih dari 5% sesi aplikasi Anda, dengan rata-rata selama 28 hari.
Penguncian layar saat aktif yang dibuat oleh API yang dimulai pengguna audio, lokasi, dan JobScheduler dikecualikan dari perhitungan penguncian layar saat aktif.
Memahami penguncian layar saat aktif
Penguncian layar saat aktif adalah mekanisme yang memungkinkan aplikasi menjaga CPU perangkat tetap berjalan meskipun pengguna tidak berinteraksi secara aktif dengan perangkat.
Penguncian layar saat aktif parsial menjaga CPU tetap berjalan meskipun layar dinonaktifkan, sehingga mencegah CPU memasuki status "ditangguhkan" berdaya rendah. Penguncian layar saat aktif penuh membuat layar dan CPU tetap berjalan.
Ada 2 metode untuk mendapatkan kunci wake parsial:
- Aplikasi secara manual mendapatkan dan melepaskan penguncian layar saat aktif menggunakan API PowerManager untuk kasus penggunaan tertentu, yang sering kali diperoleh bersama dengan Layanan Latar Depan - API siklus proses platform yang ditujukan untuk operasi yang dapat dirasakan pengguna.
- Atau, kunci tetap aktif diperoleh oleh API lain, dan diatribusikan ke aplikasi karena penggunaan API, selengkapnya di bagian praktik terbaik.
Meskipun kunci tetap aktif diperlukan untuk tugas seperti menyelesaikan download file besar yang dimulai pengguna, penggunaan yang berlebihan atau tidak tepat dapat menyebabkan baterai cepat habis. Kami telah melihat kasus ketika aplikasi menahan kunci tetap aktif selama berjam-jam atau gagal melepaskannya dengan benar, sehingga menyebabkan keluhan pengguna tentang pengurasan baterai yang signifikan meskipun mereka tidak berinteraksi dengan aplikasi.
Praktik Terbaik untuk Penggunaan Wake Lock
Sebelum kita membahas cara men-debug penggunaan wake lock yang berlebihan, pastikan Anda mengikuti praktik terbaik wake lock.
Pertimbangkan empat pertanyaan penting ini.
1. Apakah Anda sudah mempertimbangkan opsi kunci layar alternatif?
Sebelum mempertimbangkan untuk mendapatkan kunci aktivasi parsial manual, ikuti diagram alur pengambilan keputusan ini:
Diagram alir untuk memutuskan kapan harus mendapatkan kunci aktif secara manual
- Apakah layar harus tetap aktif?
- Ya: Lihat dokumentasi Layar Tetap Aktif sebagai gantinya
- Apakah aplikasi menjalankan layanan latar depan?
- Tidak: Anda tidak perlu mendapatkan kunci aktif secara manual.
- Apakah pengalaman pengguna akan terganggu jika perangkat ditangguhkan?
- Tidak: Misalnya, memperbarui notifikasi setelah perangkat aktif tidak memerlukan kunci aktif.
- Ya: Jika penting untuk mencegah perangkat ditangguhkan, seperti komunikasi yang sedang berlangsung dengan perangkat eksternal, lanjutkan.
- Apakah sudah ada API yang membuat perangkat tetap aktif atas nama Anda?
- Anda dapat memanfaatkan dokumentasi Mengidentifikasi kunci tetap aktif yang dibuat oleh API lain untuk mengidentifikasi skenario saat kunci tetap aktif dibuat oleh API lain seperti LocationManager.
- Jika tidak ada API, lanjutkan ke pertanyaan terakhir.
- Jika Anda telah menjawab semua pertanyaan ini dan menentukan bahwa tidak ada alternatif lain, Anda harus melanjutkan dengan mendapatkan kunci aktif secara manual.
2. Apakah Anda memberi nama penguncian layar saat aktif dengan benar?
Saat mendapatkan kunci wake secara manual, penamaan yang tepat penting untuk proses debug:
- Kosongkan Informasi Identitas Pribadi (PII) dalam nama seperti alamat email. Jika PII terdeteksi, kunci tetap aktif dicatat sebagai
_UNKNOWN, sehingga menghambat proses penelusuran bug. - Jangan memberi nama kunci tetap aktif Anda secara terprogram menggunakan nama class atau metode, karena nama ini dapat diobfuscate oleh alat seperti Proguard. Sebagai gantinya, gunakan string hard code.
- Jangan menambahkan penghitung atau ID unik ke tag penguncian layar saat aktif. Tag yang sama harus digunakan setiap kali kunci tetap aktif berjalan agar sistem dapat menggabungkan penggunaan menurut nama, sehingga perilaku tidak normal lebih mudah dideteksi.
3. Apakah kunci wake yang diperoleh selalu dilepaskan?
Jika Anda mendapatkan penguncian layar saat aktif secara manual, pastikan pelepasan penguncian layar saat aktif selalu dieksekusi. Jika tidak dilepaskan, fitur penguncian layar saat aktif dapat menyebabkan baterai cepat habis.
Misalnya, jika pengecualian yang tidak tertangkap ditampilkan selama processingWork(), panggilan release() mungkin tidak akan pernah terjadi. Sebagai gantinya, Anda dapat menggunakan blok try-finally untuk menjamin penguncian layar saat aktif dilepaskan, meskipun terjadi pengecualian.
Selain itu, Anda dapat menambahkan waktu tunggu untuk kunci tetap aktif guna memastikan kunci dilepaskan setelah jangka waktu tertentu, sehingga mencegahnya ditahan tanpa batas waktu.
fun processingWork() {
wakeLock.apply {
try {
acquire(60 * 10 * 1000) // timeout after 10 minutes
doTheWork()
} finally {
release()
}
}
}4. Dapatkah Anda mengurangi frekuensi aktivasi?
Untuk permintaan data berkala, mengurangi frekuensi aplikasi Anda mengaktifkan perangkat adalah kunci untuk pengoptimalan baterai. Beberapa contoh pengurangan frekuensi aktivasi mencakup:
- WorkManager: Tingkatkan interval periodik dalam PeriodicWorkRequest.
- SensorManager: Manfaatkan pengelompokan dengan menentukan maxReportLatencyMs saat mendaftarkan pemroses.
- Fused Location Provider:
- Kurangi frekuensi pengambilan lokasi dengan menggunakan getLastLocation untuk lokasi yang di-cache terbaru.
- Gunakan setPriority(PRIORITY_PASSIVE) untuk metode update yang tidak terlalu menguras baterai.
- Selain itu, Anda dapat memanfaatkan mekanisme pengelompokan lokasi dengan menetapkan interval update minimum menggunakan setMinUpdateIntervalMillis.
Anda dapat melihat detail selengkapnya di dokumentasi praktik terbaik kunci tetap aktif.
Mendebug penggunaan penguncian layar saat aktif yang berlebihan
Bahkan dengan niat terbaik, penggunaan kunci tetap aktif yang berlebihan dapat terjadi. Jika aplikasi Anda ditandai di Konsol Play, berikut cara men-debugnya:
Identifikasi awal dengan Konsol Play
Dasbor penguncian layar saat aktif parsial berlebihan Android vitals memberikan perincian nama penguncian layar saat aktif yang tidak dikecualikan dan terkait dengan aplikasi Anda, yang menunjukkan sesi dan durasi yang terpengaruh. Pengingat untuk menggunakan dokumentasi guna membantu Anda mengidentifikasi apakah nama kunci tetap aktif dipegang oleh aplikasi atau API lain.
Dasbor penguncian layar saat aktif parsial berlebihan Android vitals di-scroll ke bawah ke bagian perincian untuk melihat tag penguncian layar saat aktif berlebihan.
Men-debug penguncian layar saat aktif yang berlebihan yang ditahan oleh pekerja/tugas
Anda dapat mengidentifikasi kunci aktif yang dipegang pekerja dengan nama kunci aktif ini:
*job*/<package_name>/androidx.work.impl.background.systemjob.SystemJobService
Daftar lengkap variasi nama kunci tetap aktif yang dipegang pekerja tersedia di dokumentasi. Untuk men-debug kunci aktif ini, Anda dapat menggunakan Background Task Inspector untuk men-debug secara lokal, atau memanfaatkan getStopReason untuk men-debug masalah di lapangan.
Android Studio Background Task Inspector
Screenshot Background Task Inspector, yang telah berhasil mengidentifikasi pekerja “WeatherSyncWorker” yang sering mencoba lagi dan gagal.
Untuk men-debug masalah WorkManager secara lokal, gunakan alat ini di emulator atau perangkat yang terhubung (level API 26+). Alat ini menampilkan daftar pekerja dan statusnya (selesai, sedang dieksekusi, dalam antrean), sehingga Anda dapat memeriksa detail dan memahami rantai pekerja.
Misalnya, hal ini dapat mengungkapkan apakah pekerja sering gagal atau mencoba lagi karena mencapai batasan sistem.
Lihat dokumentasi Background Task Inspector untuk mengetahui detail selengkapnya.
WorkManager getStopReason
Untuk men-debug pekerja di lapangan dengan kunci wake yang berlebihan, gunakan WorkInfo.getStopReason() di WorkManager 2.9.0+ atau untuk JobScheduler, JobParameters.getStopReason() yang tersedia di SDK 31+.
API ini membantu mencatat alasan mengapa pekerja berhenti (misalnya, STOP_REASON_TIMEOUT, STOP_REASON_QUOTA), sehingga dapat menunjukkan masalah seperti seringnya terjadi waktu tunggu habis karena durasi runtime yang habis.
backgroundScope.launch {
WorkManager.getInstance(context)
.getWorkInfoByIdFlow(workRequest.id)
.collect { workInfo ->
logStopReason(workRequest.id, workInfo?.stopReason)
}
}Lihat Mengoptimalkan penggunaan baterai untuk API penjadwalan tugas guna mengetahui detail selengkapnya.
Men-debug jenis penguncian layar saat aktif berlebihan lainnya
Untuk skenario yang lebih rumit yang melibatkan kunci tetap aktif yang dipegang secara manual atau API yang menahan kunci tetap aktif, sebaiknya gunakan pengumpulan rekaman aktivitas sistem untuk men-debug.
Pengumpulan rekaman aktivitas sistem
Rekaman aktivitas sistem adalah alat proses debug yang canggih yang merekam aktivitas sistem secara mendetail selama jangka waktu tertentu, sehingga memberikan insight tentang status CPU, aktivitas thread, aktivitas jaringan, dan metrik terkait baterai seperti durasi tugas dan penggunaan kunci tetap aktif.
Anda dapat merekam aktivitas sistem menggunakan beberapa metode:
- Menggunakan alat command line rekaman aktivitas sistem
- Menggunakan CPU Profiler Android Studio
- Menggunakan UI Perfetto
- Merekam rekaman aktivitas secara manual di perangkat langsung dari opsi developer.
Aktifkan kategori Atrace "power:PowerManagement" di UI Perfetto pada tab Android apps & svcs.
Terlepas dari metode yang dipilih, Anda harus memastikan bahwa Anda mengumpulkan kategori Atrace "power:PowerManagement" untuk mengaktifkan penayangan rekaman aktivitas status perangkat.
Pemeriksaan UI Perfetto dan analisis SQL
Rekaman aktivitas sistem dapat dibuka dan diperiksa di UI Perfetto. Saat membuka rekaman aktivitas, Anda akan melihat visualisasi berbagai proses pada linimasa. Jalur yang akan kita fokuskan dalam panduan ini adalah jalur di bagian “Status Perangkat”.
Sematkan jalur di bagian “Status Perangkat” seperti jalur "Aplikasi teratas", "Status layar", "Long Wake locks", dan “Jobs” untuk mengidentifikasi secara visual slice wake lock yang berjalan lama.
Setiap blok mencantumkan nama acara, kapan acara dimulai, dan kapan acara berakhir. Di Perfetto, ini disebut slice.
Untuk analisis beberapa rekaman aktivitas yang skalabel, Anda dapat menggunakan analisis SQL Perfetto. Kueri SQL dapat menemukan semua kunci aktif yang diurutkan berdasarkan durasi, sehingga membantu mengidentifikasi kontributor utama penggunaan berlebihan.
Berikut contoh kueri yang menjumlahkan semua tag kunci tetap aktif yang terjadi dalam rekaman aktivitas sistem, yang diurutkan berdasarkan total durasi:
SELECT slice.name as name, track.name as track_name,SUM(dur / 100000) as total_dur_ms FROM slice JOIN track ON slice.track_id = track.id WHERE track.name = 'WakeLocks'GROUP BY slice.name, track.name ORDER BY total_dur_ms DESC
Menggunakan ProfilingManager untuk pengumpulan rekaman aktivitas di lapangan
Untuk masalah yang sulit direproduksi, ProfilingManager (ditambahkan di SDK 35) adalah API terprogram yang memungkinkan developer mengumpulkan rekaman aktivitas sistem di lapangan dengan pemicu mulai dan akhir. API ini menawarkan kontrol yang lebih besar atas titik pemicu mulai dan akhir untuk pengumpulan profil serta menerapkan pembatasan kecepatan tingkat sistem untuk mencegah dampak performa perangkat.
Lihat dokumentasi ProfilingManager untuk mengetahui langkah-langkah lebih lanjut tentang cara menerapkan pengumpulan rekaman aktivitas sistem di lapangan yang mencakup cara merekam aktivitas secara terprogram, menganalisis data pembuatan profil, dan menggunakan perintah debug lokal.
Rekaman aktivitas sistem yang dikumpulkan menggunakan ProfilingManager akan terlihat mirip dengan yang dikumpulkan secara manual, tetapi proses sistem dan proses aplikasi lainnya disamarkan dari rekaman aktivitas.
Kesimpulan
Metrik penguncian layar saat aktif parsial yang berlebihan di Android vitals hanyalah sebagian kecil dari komitmen berkelanjutan kami untuk mendukung developer dalam mengurangi pengurasan baterai dan meningkatkan kualitas aplikasi.
Dengan memahami dan menerapkan penguncian layar saat aktif dengan benar, Anda dapat mengoptimalkan performa baterai aplikasi secara signifikan. Memanfaatkan API alternatif, mematuhi praktik terbaik penguncian layar saat aktif, dan menggunakan alat proses debug yang canggih seperti Background Task Inspector, rekaman aktivitas sistem, dan ProfilingManager adalah kunci untuk memastikan keberhasilan aplikasi Anda di Google Play.
Lanjutkan membaca
-
Berita Produk
Setiap developer memiliki alur kerja dan kebutuhan AI yang unik, dan penting untuk dapat memilih cara AI membantu pengembangan Anda. Pada bulan Januari, kami memperkenalkan kemampuan untuk memilih model AI lokal atau jarak jauh guna mendukung fungsi AI di Android Studio
Matthew Warner • Waktu baca: 2 menit
-
Berita Produk
Android Studio Panda 3 kini stabil dan siap digunakan dalam produksi. Rilis ini memberi Anda lebih banyak kontrol dan penyesuaian atas alur kerja yang didukung AI, sehingga mempermudah pembuatan aplikasi Android berkualitas tinggi.
Matt Dyor • Waktu baca 3 menit
-
Berita Produk
Di Google, kami berkomitmen untuk menghadirkan model AI tercanggih langsung ke perangkat Android di saku Anda. Hari ini, dengan senang hati kami mengumumkan rilis model terbuka canggih terbaru kami: Gemma 4.
Caren Chang, David Chou • Waktu baca 3 menit
Terus dapatkan informasi
Dapatkan insight pengembangan Android terbaru yang dikirim ke kotak masuk Anda setiap minggu.