Pembatasan pada memulai aktivitas dari latar belakang

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

Panduan ini menyajikan notifikasi sebagai alternatif untuk memulai aktivitas dari latar belakang. Selanjutnya, panduan ini mencantumkan kasus khusus di mana pembatasan tidak berlaku.

Tampilkan notifikasi

Dalam hampir semua kasus, aplikasi yang berada di latar belakang harus menampilkan pemberitahuan sensitif waktu untuk memberikan informasi mendesak kepada pengguna alih-alih langsung memulai suatu aktivitas. Contoh kapan harus menggunakan notifikasi tersebut termasuk menangani panggilan telepon masuk atau jam alarm aktif.

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

  • Saat menggunakan perangkat, pengguna diperlihatkan pemberitahuan head-up yang memungkinkan mereka untuk merespons. Pengguna mempertahankan konteks mereka saat ini dan memiliki kontrol atas konten yang mereka lihat di layar.
  • Notifikasi sensitif waktu sangat memperhatikan aturan pengguna Jangan Ganggu. Misalnya, pengguna mungkin mengizinkan panggilan hanya dari kontak tertentu, atau mengulangi penelepon, ketika Jangan Ganggu diaktifkan.
  • Ketika layar perangkat mati, intent layar penuh Anda diluncurkan segera.
  • Di layar Setelan perangkat, pengguna dapat melihat aplikasi mana yang baru-baru ini mengirim notifikasi, termasuk dari saluran pemberitahuan tertentu. Dari layar ini, pengguna dapat mengontrol preferensi notifikasi mereka.

Pengecualian untuk pembatasan

Aplikasi yang berjalan pada Android 10 atau lebih tinggi dapat memulai aktivitas hanya ketika satu atau lebih kondisi berikut terpenuhi:

  • Aplikasi ini memiliki jendela yang terlihat, seperti aktivitas di latar depan.
  • Aplikasi ini memiliki aktivitas dalam tumpukan belakang tugas latar depan.
  • Aplikasi ini memiliki aktivitas di tumpukan belakang tugas yang ada di layar Terbaru.

  • Aplikasi ini memiliki aktivitas yang dimulai baru-baru ini.

  • Aplikasi yang bernama finish() dalam suatu aktivitas baru-baru ini. Ini hanya berlaku ketika aplikasi memiliki aktivitas di latar depan atau aktivitas di tumpukan belakang tugas latar depan pada saat finish() dipanggil.

  • Aplikasi ini memiliki layanan yang terikat oleh sistem. Kondisi ini hanya berlaku untuk layanan berikut, yang mungkin perlu membuka UI: AccessibilityService, AutofillService, CallRedirectionService, HostApduService, InCallService, TileService, VoiceInteractionService, dan VrListenerService.

  • Aplikasi ini memiliki layanan yang terikat oleh aplikasi yang berbeda dan terlihat. Perhatikan bahwa aplikasi yang terikat pada layanan harus tetap terlihat agar aplikasi di latar belakang bisa memulai aktivitas dengan berhasil.

  • Aplikasi menerima notifikasi PendingIntent dari sistem. Dalam hal intent yang 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 yang berbeda dan terlihat.

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

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

  • Aplikasi ini adalah pengontrol kebijakan perangkat yang berjalan dalam mode pemilik perangkat. Contoh kasus penggunaan mencakup perangkat perusahaan yang dikelola penuh, serta perangkat khusus seperti signage digital dan kios.

  • Aplikasi ini telah diberikan izin SYSTEM_ALERT_WINDOW oleh pengguna.