Selamat datang di Pratinjau Developer Android 12. Beri kami masukan lebih awal dan sering, serta bantu kami menjadikan Android 12 sebagai rilis terbaik!

Pembatasan peluncuran layanan latar depan

Berikan ikon masukan Kami ingin mendengar masukan dari Anda tentang pembatasan ini. Ikuti survei singkat untuk menyampaikan opini Anda. Secara khusus, beri tahu kami kasus penggunaan di aplikasi Anda yang terpengaruh oleh perubahan ini.

Aplikasi yang menargetkan Android 12 tidak dapat lagi memulai layanan latar depan saat berjalan di latar belakang, kecuali untuk beberapa kasus khusus. Jika aplikasi mencoba memulai layanan latar depan saat aplikasi berjalan di latar belakang, dan layanan latar depan tidak memenuhi salah satu kasus yang luar biasa, sistem akan menampilkan IllegalStateException.

Jika aplikasi Anda terpengaruh oleh perubahan ini, sebaiknya Anda bermigrasi untuk menggunakan WorkManager. Saat Android 12 beta dirilis, WorkManager akan menjadi solusi yang direkomendasikan untuk memulai tugas latar belakang dengan prioritas yang lebih tinggi.

Work Manager 2.7.0-alpha01 menyertakan dukungan untuk pekerjaan yang dipercepat yang merupakan jenis pekerjaan baru di Android 12. Pada Android 12 dan yang lebih rendah, WorkManager versi ini menggunakan layanan latar depan untuk menyediakan kompatibilitas mundur.

Untuk melihat contoh lengkap cara Work Manager 2.7.0-alpha01 menggunakan tugas yang dipercepat, lihat WorkManagerSample di GitHub.

Pekerjaan yang dipercepat

Pekerjaan yang dipercepat, dan juga merupakan hal baru di Android 12, memungkinkan aplikasi untuk menjalankan tugas penting sekaligus memberi sistem kontrol yang lebih baik untuk akses ke resource. Pekerjaan ini memiliki serangkaian karakteristik di antara layanan latar depan dan pekerjaan JobScheduler:

  • Masalah ini tidak terpengaruh oleh beberapa pembatasan pengelolaan daya sistem, seperti fitur Penghemat Baterai dan Istirahatkan.
  • Sistem akan segera menjalankannya, dengan ketentuan bahwa beban kerja sistem saat ini memungkinkan untuk melakukannya.

Pekerjaan yang dipercepat mungkin ditangguhkan

Sistem mencoba mengeksekusi tugas tertentu yang dipercepat segera setelah tugas dipanggil. Namun, seperti halnya dengan jenis pekerjaan lain, sistem dapat menunda dimulainya pekerjaan baru yang dipercepat jika ada terlalu banyak tugas yang sudah berjalan, atau jika resource sistem hampir habis.

Secara khusus, sistem menangguhkan eksekusi tugas yang dipercepat jika setidaknya salah satu kondisi berikut terjadi:

  • Pemuatan sistem terlalu tinggi.
  • Batas kuota pekerjaan yang dipercepat telah terlampaui. Pekerjaan yang telah diedit menggunakan sistem kuota yang didasarkan pada Bucket Aplikasi Standby dan membatasi waktu eksekusi maksimum dalam jendela waktu yang bergulir. Kuota yang digunakan untuk tugas yang dipercepat lebih ketat dibandingkan dengan kuota yang digunakan untuk jenis tugas latar belakang lainnya.

Update pada WorkManager

Mulai di WorkManager 2.7.0-alpha01, aplikasi Anda dapat memanggil setExpedited() untuk menyatakan bahwa Worker harus dipercepat. API baru ini menggunakan tugas yang dipercepat saat dijalankan di Android 12, dan API menggunakan layanan latar depan pada versi Android sebelumnya.

Untuk mendorong developer agar lebih berhati-hati saat meminta pekerjaan yang dipercepat dalam aplikasi mereka, dan agar dapat lebih mendukung kemampuan memperpanjang durasi waktu untuk menjalankan tugas, metode CoroutineWorker.setForeground() dan ListenableWorker.setForegroundAsync() sudah tidak digunakan lagi. Secara khusus, perangkat yang menjalankan Android 12 dan mencoba memanggil ListenableWorker.setForegroundAsync() akan menghasilkan IllegalStateException. Sebagai gantinya, developer sebaiknya menggunakan setExpedited().

Kasus yang mengizinkan layanan latar depan diluncurkan dari latar belakang

Dalam situasi berikut, aplikasi Anda dapat memulai layanan latar depan bahkan saat aplikasi berjalan di latar belakang:

Dialog akan menanyakan apakah pengguna ingin mengizinkan aplikasi selalu
    berjalan di latar belakang atau tidak. Dialog ini berisi 2 tombol: Tolak dan Izinkan.
Gambar 1. Dialog sistem memperingatkan pengguna bahwa menghapus pengoptimalan baterai dapat mengurangi masa pakai baterai perangkat.