Batasan dalam memulai aktivitas dari latar belakang

Android 10 (level API 29) dan yang lebih tinggi menetapkan batasan tentang kapan aplikasi dapat memulai aktivitas saat aplikasi berjalan di latar belakang. Batasan ini membantu meminimalkan gangguan bagi pengguna dan membuat pengguna lebih dapat mengontrol apa yang ditampilkan di layar mereka.

Panduan ini menyajikan notifikasi sebagai alternatif untuk memulai aktivitas dari latar belakang. Bagian ini juga mencantumkan kasus spesifik saat pembatasan tidak berlaku.

Tampilkan notifikasi

Dalam hampir semua kasus, aplikasi di latar belakang harus menampilkan notifikasi mendesak untuk memberikan informasi yang mendesak kepada pengguna, bukan langsung memulai aktivitas. Notifikasi tersebut mencakup menangani panggilan telepon masuk atau jam alarm aktif.

Sistem pemberitahuan dan pengingat berbasis notifikasi ini memberikan beberapa keuntungan bagi pengguna:

  • Saat menggunakan perangkat, pengguna akan melihat notifikasi peringatan dini yang memungkinkan mereka merespons. Pengguna mempertahankan konteks saat ini dan memiliki kontrol atas konten yang dilihat di layar.
  • Notifikasi mendesak mengikuti aturan Jangan Mengganggu pengguna. Misalnya, pengguna mungkin hanya mengizinkan panggilan dari kontak tertentu atau dari pemanggil berulang saat mode Jangan Ganggu diaktifkan.
  • Saat layar perangkat nonaktif, intent layar penuh akan segera diluncurkan.
  • Di layar Setelan perangkat, pengguna dapat melihat aplikasi mana yang baru-baru ini mengirim notifikasi, termasuk dari saluran notifikasi tertentu. Dari layar ini, pengguna dapat mengontrol preferensi notifikasi mereka.

Kapan aplikasi dapat memulai aktivitas

Aplikasi yang berjalan di Android 10 atau yang lebih tinggi dapat memulai aktivitas saat satu atau beberapa kondisi berikut terpenuhi:

  • Aplikasi ini memiliki jendela yang terlihat, seperti aktivitas di latar depan.
  • Aplikasi memiliki aktivitas di data sebelumnya dari tugas latar depan.
  • Aplikasi memiliki aktivitas di data sebelumnya dari tugas yang ada di layar Terbaru.

  • Aplikasi memiliki aktivitas yang dimulai baru-baru ini.

  • Aplikasi memanggil finish() pada suatu aktivitas baru-baru ini. Ini hanya berlaku jika aplikasi memiliki aktivitas di latar depan atau aktivitas di data sebelumnya dari tugas latar depan pada saat finish() dipanggil.

  • Aplikasi memiliki salah satu layanan berikut yang terikat oleh sistem. Layanan ini mungkin perlu meluncurkan UI.

  • Aplikasi memiliki layanan yang terikat dengan aplikasi lain yang terlihat. Aplikasi yang terikat ke layanan tersebut harus tetap terlihat agar aplikasi di latar belakang dapat memulai aktivitas dengan sukses.

  • Aplikasi akan menerima notifikasi PendingIntent dari sistem. Jika intent tertunda untuk layanan dan penerima siaran, aplikasi dapat memulai aktivitas selama beberapa detik setelah intent yang tertunda dikirim.

  • Aplikasi menerima PendingIntent yang dikirim dari aplikasi lain yang terlihat.

  • Aplikasi menerima siaran sistem tempat aplikasi tersebut diharapkan untuk meluncurkan UI. Contohnya mencakup ACTION_NEW_OUTGOING_CALL dan SECRET_CODE_ACTION. Aplikasi ini dapat memulai aktivitas selama beberapa detik setelah siaran dikirim.

  • Aplikasi dikaitkan dengan perangkat hardware pendamping melalui CompanionDeviceManager API. API ini memungkinkan aplikasi memulai aktivitas sebagai respons terhadap tindakan yang dilakukan pengguna pada perangkat yang disambungkan.

  • Aplikasi adalah pengontrol kebijakan perangkat yang berjalan dalam mode pemilik perangkat. Contoh kasus penggunaan mencakup perangkat perusahaan terkelola sepenuhnya serta perangkat khusus seperti reklame digital dan kios.

  • Aplikasi diberi izin SYSTEM_ALERT_WINDOW oleh pengguna.