Pengelolaan daya

Android 9 (API level 28) memperkenalkan beberapa fitur baru untuk meningkatkan manajemen daya perangkat. Ini perubahan, beserta fitur yang sudah ada di versi sebelumnya, membantu untuk memastikan bahwa sumber daya sistem diberikan ke aplikasi yang paling membutuhkan.

Fitur manajemen daya dikelompokkan dalam dua kategori:

Bucket aplikasi standby
Sistem membatasi aplikasi akses ke sumber daya perangkat seperti CPU atau baterai, berdasarkan pola penggunaan pengguna. Ini adalah fitur baru untuk Android 9.
Peningkatan penghemat baterai
Saat penghemat baterai diaktifkan, sistem menerapkan batasan pada semua aplikasi. Ini adalah fitur yang saat ini disempurnakan dengan Android 9.

Bucket Aplikasi Standby

Android 9 memperkenalkan fitur manajemen baterai baru, Bucket Aplikasi Standby. Bucket Aplikasi Standby membantu sistem memprioritaskan aplikasi permintaan resource berbasis terkait seberapa baru dan seberapa sering aplikasi digunakan. Berdasarkan penggunaan aplikasi pola ini, setiap aplikasi ditempatkan di salah satu dari lima kategori prioritas. Sistem membatasi resource perangkat yang tersedia untuk setiap aplikasi berdasarkan bucket mana aplikasi tersebut berada di dalam.

Kelima bucket memprioritaskan aplikasi ke dalam kelompok menurut karakteristik berikut:

Aktif

Aplikasi berada di bucket active jika pengguna sedang menggunakan aplikasi tersebut, selama contoh:

  • Aplikasi telah meluncurkan aktivitas
  • Aplikasi sedang menjalankan layanan latar depan
  • Aplikasi memiliki adaptor sinkronisasi yang terkait dengan penyedia konten yang digunakan oleh aplikasi latar depan
  • Pengguna mengklik notifikasi dari aplikasi

Jika aplikasi berada di bucket active, sistem tidak akan memberlakukan pembatasan pada tugas, alarm, atau pesan FCM aplikasi.

Working set

Aplikasi berada di bucket working set jika sering dijalankan, tetapi saat ini tidak aktif. Misalnya, aplikasi media sosial yang diluncurkan pengguna hampir setiap hari mungkin berada di {i>working set<i}. Aplikasi juga dipromosikan ke working set bucket jika digunakan secara tidak langsung.

Jika aplikasi berada di bucket working set, sistem akan menerapkan pembatasan ringan pada kemampuannya untuk menjalankan tugas dan memicu alarm. Untuk mengetahui detailnya, lihat Pembatasan pengelolaan daya.

Frequent

Aplikasi berada di bucket frequent jika digunakan secara teratur, tetapi belum tentu setiap harinya. Misalnya, aplikasi pemantau olahraga yang dijalankan pengguna di sasana olahraga mungkin akan ditempatkan di bucket frequent.

Jika aplikasi berada di bucket frequent, sistem akan menerapkan pembatasan yang lebih ketat pada kemampuannya untuk menjalankan tugas dan memicu alarm, serta pesan FCM prioritas tinggi. Untuk mengetahui detailnya, lihat Pembatasan pengelolaan daya.

Rare

Aplikasi berada dalam bucket jarang jika tidak sering digunakan. Misalnya, sebuah aplikasi hotel bahwa pengguna hanya berlari saat mereka sedang menginap di hotel itu, mungkin direktori VM dengan bucket.

Jika aplikasi berada di bucket rare, sistem akan menerapkan pembatasan ketat pada kemampuannya untuk menjalankan tugas, memicu alarm, dan menerima pesan FCM prioritas tinggi. Sistem juga membatasi kemampuan aplikasi tersebut untuk tersambung ke internet. Sebagai lihat Pembatasan pengelolaan daya.

Jangan pernah

Aplikasi yang telah diinstal tetapi belum pernah dijalankan akan ditetapkan ke bucket tidak pernah. Sistem akan mengenakan pembatasan berat pada aplikasi ini.

Sistem secara dinamis menetapkan setiap aplikasi ke bucket prioritas, dan menetapkan ulang aplikasi sesuai kebutuhan. Sistem mungkin mengandalkan aplikasi pramuat yang menggunakan komputer untuk menentukan seberapa besar kemungkinan aplikasi yang akan digunakan, dan menetapkan aplikasi ke bucket yang sesuai. Jika sistem aplikasi tidak ada di perangkat, secara default sistem akan mengurutkan aplikasi berdasarkan seberapa baru istilah tersebut digunakan. Aplikasi yang lebih aktif ditetapkan ke bucket yang memberi prioritas lebih tinggi pada aplikasi, lebih banyak sumber daya sistem yang tersedia untuk aplikasi. Secara khusus, bucket menentukan seberapa sering tugas aplikasi berjalan, seberapa sering aplikasi dapat memicu alarm, dan seberapa sering aplikasi dapat menerima Firebase Cloud prioritas tinggi Mengirim pesan (FCM). Pembatasan ini hanya berlaku saat perangkat menggunakan daya baterai; sistem tidak memberlakukan pembatasan ini pada aplikasi saat perangkat sedang mengisi daya.

Setiap produsen dapat menetapkan kriteria mereka sendiri terkait seberapa nonaktif aplikasi yang ditetapkan ke bucket. Anda tidak boleh memengaruhi bucket mana yang digunakan aplikasi Anda ditetapkan kepadanya. Sebaliknya, fokuslah untuk memastikan aplikasi Anda berperilaku dengan baik dalam apa pun bucket yang mungkin berada di dalamnya. Aplikasi Anda dapat mengetahui bucket yang ditempatinya dengan memanggil metode baru UsageStatsManager.getAppStandbyBucket()

Praktik terbaik

Jika aplikasi Anda sudah mengikuti praktik terbaik untuk Istirahatkan dan aplikasi standby, menangani fitur manajemen daya yang baru seharusnya tidak sulit. Namun, beberapa perilaku aplikasi yang sebelumnya bekerja dengan baik sekarang dapat menyebabkan masalah.

  • Jangan mencoba memanipulasi sistem agar menempatkan aplikasi Anda ke dalam satu kelompok atau lain. Metode bucketing sistem dapat berubah, dan setiap perangkat produsen dapat memilih untuk menulis aplikasi bucketing mereka sendiri dengan algoritme. Sebagai gantinya, pastikan aplikasi Anda berperilaku dengan baik di bucket mana pun berada.
  • Jika tidak memiliki aktivitas peluncur, aplikasi mungkin tidak akan pernah dipromosikan ke bucket active. Anda mungkin ingin mendesain ulang aplikasi agar memiliki aktivitas Anda.
  • Jika notifikasi aplikasi tidak dapat ditindaklanjuti, pengguna tidak akan dapat memicu promosi aplikasi ke bucket active dengan cara berinteraksi dengan notifikasi. Di beberapa Dalam hal ini, Anda mungkin perlu mendesain ulang beberapa notifikasi yang sesuai sehingga memungkinkan respons dari pengguna. Untuk mempelajari beberapa panduan, lihat Desain notifikasi Desain Material yang sama.
  • Demikian pula, jika aplikasi tidak menampilkan notifikasi setelah menerima pesan FCM prioritas tinggi, aplikasi ini tidak akan memberikan kesempatan kepada pengguna untuk berinteraksi dengan aplikasi dan dengan demikian mempromosikannya kepada bucket active. Satu-satunya tujuan penggunaan pesan FCM prioritas tinggi adalah mengirim notifikasi ke pengguna, jadi situasi ini tidak boleh terjadi. Jika Anda menandai pesan FCM dengan tidak tepat sebagai prioritas tinggi jika pesan tersebut tidak dipicu interaksi pengguna, hal itu dapat menyebabkan konsekuensi negatif lainnya; misalnya, dapat dapat mengakibatkan aplikasi Anda kehabisan kuota, menyebabkan hal yang benar-benar mendesak Pesan FCM akan diperlakukan sebagai prioritas normal.

    Catatan: Jika pengguna terus-menerus menolak notifikasi, memberi pengguna pilihan untuk memblokir notifikasi itu di masa mendatang. Jangan membanjiri pengguna dengan notifikasi hanya untuk mencoba membuat aplikasi Anda tetap di bucket active.

  • Jika aplikasi dibagi menjadi beberapa paket, paket-paket itu mungkin berada bucket berbeda dan, akibatnya, memiliki level akses yang berbeda. Anda harus memastikan uji aplikasi tersebut dengan paket yang ditetapkan ke berbagai bucket untuk memastikan aplikasi berjalan dengan benar.

Peningkatan penghemat baterai

Android 9 membuat banyak peningkatan pada mode penghemat baterai. Produsen perangkat menentukan pembatasan yang dikenakan secara presisi. Misalnya, di Pada build AOSP, sistem menerapkan pembatasan berikut:

  • Sistem memasukkan aplikasi ke mode aplikasi standby secara lebih agresif, bukan menunggu aplikasi tidak ada aktivitas.
  • Batas eksekusi latar belakang berlaku untuk semua aplikasi, apa pun API targetnya level organisasi.
  • Layanan lokasi mungkin akan dinonaktifkan saat layar mati.
  • Aplikasi latar belakang tidak memiliki akses jaringan.

Sebagai tambahan, ada beberapa optimalisasi daya untuk perangkat tertentu. Untuk lengkap detailnya, lihat halaman yang menjelaskan pengelolaan daya batasan.

Seperti biasa, sebaiknya Anda menguji aplikasi saat penghemat baterai aktif. Anda dapat mengaktifkan penghemat baterai secara manual melalui Setelan > perangkat Aki layar lebih cepat.

Menguji dan memecahkan masalah

Fitur pengelolaan daya yang baru memengaruhi semua aplikasi yang berjalan di perangkat Android 9, baik atau tidak menargetkan aplikasi Android 9. Sebaiknya pastikan aplikasi Anda berfungsi di perangkat ini dengan benar.

Pastikan untuk menguji kasus penggunaan utama aplikasi Anda dalam berbagai kondisi, untuk melihat bagaimana fitur manajemen daya berinteraksi satu sama lain. Anda dapat menggunakan Android Perintah Debug Bridge untuk mengubah beberapa mengaktifkan dan menonaktifkan fitur baru.

Perintah Android Debug Bridge

Anda dapat menggunakan perintah shell Android Debug Bridge untuk menguji beberapa fitur pengelolaan daya.

Untuk informasi tentang cara menggunakan ADB guna menyetel perangkat Anda dalam Istirahatkan, lihat Menguji dengan fitur Istirahatkan dan Aplikasi Standby.

Bucket Aplikasi Standby

Anda dapat menggunakan ADB untuk menetapkan aplikasi secara manual ke Bucket Aplikasi Standby. Untuk mengubah bucket aplikasi, gunakan perintah berikut:

$ adb shell am set-standby-bucket packagename active|working_set|frequent|rare

Anda juga bisa menggunakan perintah itu untuk menyetel beberapa package sekaligus:

$ adb shell am set-standby-bucket package1 bucket1 package2 bucket2...

Untuk memeriksa di bucket apa aplikasi berada, jalankan

$ adb shell am get-standby-bucket [packagename]

Jika Anda tidak meneruskan parameter packagename, perintah tersebut akan menampilkan bucket untuk semua aplikasi. Aplikasi juga dapat mengetahui bucket-nya pada saat runtime dengan memanggil metode baru UsageStatsManager.getAppStandbyBucket()

Penghemat baterai

Ada sejumlah perintah untuk menguji bagaimana perilaku aplikasi Anda dalam kondisi rendah daya.

Untuk menyimulasikan perangkat yang sedang dicabut dari stekernya, gunakan perintah

$ adb shell dumpsys battery unplug

Untuk menguji bagaimana perilaku perangkat pada kondisi rendah daya, gunakan perintah ini:

$ adb shell settings put global low_power 1

Setelah menyelesaikan pengujian, Anda dapat mengurungkan setelan perangkat manual dengan perintah ini:

$ adb shell dumpsys battery reset