Batas resource pengelolaan daya

Sistem memprioritaskan permintaan resource oleh aplikasi berdasarkan status perangkat, status aplikasi, dan bucket standby aplikasi.

Sistem Android dapat menerapkan batas resource dengan dua cara yang berbeda. Salah satu cara untuk mengoptimalkan penggunaan resource adalah dengan menunda eksekusi tugas hingga perangkat telah keluar dari status perangkat daya rendah seperti mode istirahatkan. Misalnya, tugas reguler dan alarm yang tidak akurat ditangguhkan sehingga dieksekusi setelah perangkat keluar dari mode mode tidur.

Cara lainnya adalah dengan mengurangi seberapa banyak aplikasi dapat mengaktifkan perangkat dan melakukan pekerjaan, berdasarkan bucket standby aplikasi saat ini. Sistem dapat mengurangi frekuensi (seberapa sering aplikasi mengaktifkan perangkat) dan total durasi (jumlah waktu perangkat tetap aktif). Misalnya, jika aplikasi berada di bucket standby rare, aplikasi dapat menjalankan tugas terjadwal selama total periode 10 menit dalam periode 24 jam bergulir.

Perhatikan bahwa WorkManager menggunakan JobScheduler untuk menjadwalkan tugas saat aplikasi tidak terlihat dan pekerja akan terpengaruh oleh batas resource tugas.

Anda dapat memahami batasan lebih lanjut dengan membaca:

  1. Batas resource berdasarkan status perangkat
  2. Batas resource berdasarkan status aplikasi
  3. Batas resource berdasarkan bucket aplikasi standby

Perhatikan bahwa status perangkat dan status aplikasi dapat menggantikan batas bucket siaga aplikasi. Misalnya, jika perangkat sedang diisi dayanya, sistem akan mengizinkan aplikasi dalam bucket standby rare untuk menjalankan tugas selama lebih dari 10 menit dalam periode 24 jam bergulir.

Ada perubahan perilaku yang juga memengaruhi batas resource. Lihat Perubahan Perilaku Android yang memengaruhi batas resource untuk mempelajari lebih lanjut.

Batas resource berdasarkan status perangkat

Sistem juga dapat mengecualikan atau menerapkan batas resource berdasarkan status perangkat. Misalnya, perangkat dalam status charging diberi akses resource yang tidak dibatasi terlepas dari bucket standby aplikasinya.

Status perangkat

Lowongan

Alarm

Akses jaringan

Firebase Cloud Messaging

Mengisi daya

Tidak ada batas eksekusi kecuali untuk bucket standby restricted

Tidak ada batas eksekusi untuk semua bucket standby dan status proses, kecuali jika pengguna membatasi baterai aplikasi secara manual

Tidak ada batasan

Tidak ada batasan

Layar aktif

Batas eksekusi diterapkan berdasarkan bucket standby

Batas eksekusi diterapkan berdasarkan proses aplikasi dan bucket standby

Akses bergantung pada bucket standby atau status proses aplikasi

Tidak ada batasan

Layar nonaktif dan mode tidur aktif

Batas eksekusi diterapkan berdasarkan bucket standby, dan eksekusi ditangguhkan ke periode pemeliharaan mode tidur

Batas eksekusi diterapkan berdasarkan bucket standby.

Alarm biasa: Dialihkan ke masa pemeliharaan mode tidur

Alarm saat tidak ada aktivitas: Dibatasi hingga 7 per jam

Dibatasi selama mode tidur

Prioritas tinggi: Tidak ada batas eksekusi

Prioritas normal: Dialihkan ke masa pemeliharaan mode tidur

Batas resource berdasarkan status aplikasi

Apakah sistem menerapkan batas resource bucket standby aplikasi atau tidak bergantung pada tingkat kepentingan proses aplikasi. Lihat ActivityManager.RunningAppProcessInfo.importance untuk memahami berbagai tingkat kepentingan proses.

Pengguna perangkat juga dapat memilih untuk mengganti secara manual pengoptimalan manajemen daya aplikasi, yang menggantikan batas bucket aplikasi standby.

Status Aplikasi

Lowongan

Alarm

Jaringan

Proses aplikasi terlihat atau dalam status latar depan

Tidak ada batas eksekusi

Tidak ada batas frekuensi

Tidak ada batasan

Proses aplikasi sedang menjalankan layanan latar depan

Batas eksekusi diterapkan berdasarkan bucket standby***

Batas frekuensi diterapkan berdasarkan bucket standby

Tidak ada batasan

Pengguna membatasi baterai aplikasi secara manual

Eksekusi dibatasi

Eksekusi dibatasi

Akses bergantung pada perilaku bucket standby

Pengguna membatalkan pembatasan baterai aplikasi secara manual

Batas eksekusi cukup besar***

Tidak ada batas eksekusi

Tidak dibatasi kecuali jika perangkat dalam mode penghemat data

*** Perilaku kuota eksekusi untuk tugas berubah di Android 16. Sebelum Android 16, tidak ada batas eksekusi saat aplikasi menjalankan layanan latar depan atau pengguna tidak membatasi baterai aplikasi.

Batas resource berdasarkan bucket aplikasi standby

Catatan: Nilai dalam tabel ini bukan jaminan durasi eksekusi, karena kondisi perangkat atau perubahan bucket lainnya dapat memengaruhi batasan resource. Nilai ini juga dapat berubah dalam rilis Android mendatang.

Tugas reguler, tugas yang diprioritaskan, alarm, dan akses jaringan dapat dibatasi berdasarkan bucket aplikasi standby. Pahami pengaruh bucket standby aplikasi terhadap aplikasi Anda menggunakan perkiraan batasan pengelolaan daya ini sebagai panduan. Untuk performa optimal, ikuti praktik terbaik mode standby aplikasi dan optimalkan penggunaan baterai untuk API penjadwalan tugas.

Perhatikan bahwa mulai Android 13, bucket standby aplikasi tidak lagi menentukan jumlah FCM prioritas tinggi yang dapat digunakan aplikasi.

Bucket aplikasi standby

Pekerjaan reguler*

Tugas yang diprioritaskan**

Alarm

Jaringan

Aktif:

Hingga 20 menit dalam periode 60 menit bergulir***

Hingga 30 menit dalam periode 24 jam bergulir***

Tidak ada batas eksekusi

Tidak ada batasan

Working set:

Hingga 10 menit dalam periode 4 jam bergulir

Hingga 15 menit dalam periode 24 jam bergulir

Dibatasi hingga 10 per jam

Tidak ada batasan

Sering:

Hingga 10 menit dalam periode 12 jam bergulir

Hingga 10 menit dalam periode 24 jam bergulir

Dibatasi hingga 2 per jam

Tidak ada batasan

Jarang:

Hingga 10 menit dalam jangka waktu 24 jam bergulir

Hingga 10 menit dalam periode 24 jam bergulir

Dibatasi 1 per jam

Nonaktif

Dibatasi:

Sekali per hari hingga 10 menit

Hingga 5 menit dalam periode 24 jam bergulir

Satu alarm per hari, baik alarm yang tepat maupun alarm yang tidak tepat

Nonaktif

* Tugas reguler menjelaskan tugas yang tidak menggunakan tanda setUserInitiated(true) atau setExpedited(true) di JobScheduler atau pekerja yang diprioritaskan di WorkManager.

** Tugas yang dipercepat memiliki batas eksekusi terpisah dari tugas reguler, dan dapat dikonfigurasi di WorkManager untuk terus berjalan menggunakan batas eksekusi tugas reguler setelah batas dipercepat habis.

*** Perilaku kuota eksekusi untuk tugas berubah di Android 16. Sebelum Android 16, tidak ada batas eksekusi saat aplikasi berada di bucket standby aktif.

Perubahan perilaku Android yang memengaruhi batas resource

Update Android berikut membuat perubahan pada batas resource aplikasi.

Android 16

Perubahan perilaku pengoptimalan kuota JobScheduler

Android telah menyesuaikan kuota runtime eksekusi tugas reguler dan dipercepat berdasarkan faktor berikut:

  1. Bucket standby aplikasi yang digunakan aplikasi
  2. Jika tugas memulai eksekusi saat aplikasi berada dalam status teratas
  3. Jika tugas dieksekusi saat menjalankan Layanan Latar Depan

Android 13

Perubahan perilaku Kuota Firebase Cloud Message (FCM) Prioritas Tinggi

Android 9

Fitur Bucket Aplikasi Standby diperkenalkan

Android 9 memperkenalkan fitur manajemen baterai baru, Bucket Aplikasi Standby. Bucket Aplikasi Standby membantu sistem memprioritaskan permintaan resource oleh aplikasi berdasarkan frekuensi dan waktu terakhir penggunaan aplikasi. Berdasarkan pola penggunaan aplikasi, setiap aplikasi ditempatkan di salah satu dari lima bucket prioritas. Sistem membatasi resource perangkat yang tersedia untuk setiap aplikasi berdasarkan bucket tempat aplikasi berada.