Tugas adalah kumpulan aktivitas yang berinteraksi dengan pengguna saat mencoba melakukan sesuatu di aplikasi Anda. Aktivitas ini tersusun dalam tumpukan yang disebut data sebelumnya sesuai urutan pembukaan setiap aktivitas.
Misalnya, aplikasi email mungkin memiliki satu aktivitas untuk menampilkan daftar pesan baru. Saat pengguna memilih sebuah pesan, aktivitas baru akan terbuka untuk melihat pesan tersebut. Aktivitas baru ini ditambahkan ke data sebelumnya. Kemudian, saat pengguna mengetuk atau memberi gestur Kembali, aktivitas baru tersebut akan selesai dan dikeluarkan dari tumpukan.
Siklus proses tugas dan data sebelumnya
Layar Utama perangkat adalah tempat memulai hampir semua tugas. Saat pengguna menyentuh ikon untuk aplikasi atau pintasan di peluncur aplikasi atau di Layar utama, tugas aplikasi tersebut akan muncul di latar depan. Jika tidak ada tugas untuk aplikasi, tugas baru akan dibuat dan aktivitas utama untuk aplikasi tersebut akan terbuka sebagai aktivitas root dalam tumpukan.
Jika aktivitas saat ini memulai aktivitas lain, aktivitas baru akan didorong ke bagian atas tumpukan dan mengambil fokus. Aktivitas sebelumnya tetap berada dalam tumpukan, tetapi dihentikan. Saat aktivitas dihentikan, sistem akan mempertahankan status antarmuka penggunanya saat ini. Saat pengguna melakukan tindakan kembali, aktivitas saat ini akan muncul dari bagian atas tumpukan dan dihancurkan. Aktivitas sebelumnya dilanjutkan, dan status UI sebelumnya dipulihkan.
Aktivitas dalam stack tidak pernah diatur ulang, hanya didorong ke dan muncul dari tumpukan saat dimulai oleh aktivitas saat ini dan ditutup oleh pengguna melalui tombol Kembali atau gestur. Oleh karena itu, data sebelumnya beroperasi sebagai struktur objek masuk terakhir, keluar pertama. Gambar 1 menunjukkan linimasa dengan aktivitas yang didorong ke dan muncul dari data sebelumnya.
Saat pengguna terus mengetuk atau memberi gestur Kembali, setiap aktivitas dalam tumpukan akan muncul untuk menampilkan aktivitas sebelumnya, hingga pengguna kembali ke Layar utama atau ke aktivitas mana pun yang sedang berjalan saat tugas dimulai. Jika semua aktivitas dihapus dari tumpukan, tugas tersebut tidak akan ada lagi.
Perilaku ketuk kembali untuk aktivitas peluncur root
Aktivitas peluncur root adalah aktivitas yang mendeklarasikan filter
intent dengan
ACTION_MAIN
dan
CATEGORY_LAUNCHER
.
Aktivitas ini unik karena berfungsi sebagai titik entri ke aplikasi Anda dari
peluncur aplikasi dan digunakan untuk memulai tugas.
Saat pengguna mengetuk atau memberikan gestur Kembali dari aktivitas peluncur root, sistem akan menangani peristiwa secara berbeda, bergantung pada versi Android yang dijalankan perangkat.
- Perilaku sistem di Android 11 dan yang lebih lama
- Sistem menyelesaikan aktivitas.
- Perilaku sistem di Android 12 dan yang lebih baru
Sistem memindahkan aktivitas dan tugasnya ke latar belakang, bukan menyelesaikan aktivitas. Perilaku ini cocok dengan perilaku sistem default saat menavigasi keluar aplikasi menggunakan gestur atau tombol Layar Utama.
Dalam sebagian besar kasus, perilaku ini berarti pengguna dapat melanjutkan aplikasi Anda dengan lebih cepat dari status hangat, daripada harus memulai ulang aplikasi sepenuhnya dari status cold.
Jika Anda perlu menyediakan navigasi kembali kustom, sebaiknya gunakan AndroidX Activity API, bukan ganti
onBackPressed()
. AndroidX Activity API secara otomatis mematuhi perilaku sistem yang sesuai jika tidak ada komponen yang mencegat Back tap sistem.Namun, jika aplikasi Anda mengganti
onBackPressed()
untuk menangani navigasi Kembali dan menyelesaikan aktivitas, perbarui implementasi Anda agar memanggil kesuper.onBackPressed()
, bukan menyelesaikan. Memanggilsuper.onBackPressed()
akan memindahkan aktivitas dan tugasnya ke latar belakang jika sesuai dan memberikan pengalaman navigasi yang lebih konsisten bagi pengguna di seluruh aplikasi.
Tugas latar belakang dan latar depan
Tugas adalah unit kohesif yang dapat dipindahkan ke latar belakang saat pengguna memulai tugas baru atau membuka Layar utama. Saat di latar belakang, semua aktivitas dalam tugas dihentikan, tetapi data sebelumnya untuk tugas tetap tidak berubah—tugas kehilangan fokus saat tugas lain berlangsung, seperti yang ditunjukkan pada gambar 2. Tugas kemudian dapat kembali ke latar depan sehingga pengguna dapat melanjutkan tugas dari bagian terakhir.
Pertimbangkan alur tugas berikut untuk Tugas A saat ini yang memiliki tiga aktivitas dalam tumpukannya, termasuk dua aktivitas saat ini:
Pengguna menggunakan gestur atau tombol Layar utama, lalu memulai aplikasi baru dari peluncur aplikasi.
Saat layar Utama muncul, Tugas A akan beralih ke latar belakang. Saat aplikasi baru dimulai, sistem akan memulai tugas untuk aplikasi tersebut (Tugas B) dengan tumpukan aktivitasnya sendiri.
Setelah berinteraksi dengan aplikasi tersebut, pengguna kembali ke Layar Utama dan memilih aplikasi yang awalnya memulai Tugas A.
Sekarang, Tugas A muncul di latar depan—ketiga aktivitas dalam tumpukannya tidak berjalan, dan aktivitas di bagian atas tumpukan dilanjutkan. Pada tahap ini, pengguna juga dapat beralih kembali ke Tugas B dengan membuka Layar utama dan memilih ikon aplikasi yang memulai tugas tersebut atau dengan memilih tugas aplikasi dari layar Terbaru.
Beberapa instance aktivitas
Karena aktivitas di data sebelumnya tidak pernah diatur ulang, jika aplikasi Anda memungkinkan pengguna memulai aktivitas tertentu dari lebih dari satu aktivitas, instance baru dari aktivitas tersebut akan dibuat dan didorong ke tumpukan, bukan memindahkan instance sebelumnya dari aktivitas ke atas. Dengan demikian, satu aktivitas di aplikasi Anda mungkin dibuat instance-nya beberapa kali, bahkan dari berbagai tugas, seperti yang ditunjukkan pada gambar 3.
Jika pengguna menavigasi mundur menggunakan tombol Kembali atau gestur, instance aktivitas akan ditampilkan dalam urutan saat dibuka, masing-masing dengan status UI-nya sendiri. Namun, Anda dapat mengubah perilaku ini jika tidak ingin aktivitas dibuat instance-nya lebih dari sekali. Pelajari hal ini lebih lanjut di bagian tentang mengelola tugas.
Lingkungan multi-aplikasi
Jika aplikasi berjalan secara bersamaan di lingkungan multi-aplikasi, yang didukung di Android 7.0 (level API 24) dan yang lebih tinggi, sistem akan mengelola tugas secara terpisah untuk setiap jendela. Setiap jendela dapat memiliki beberapa tugas. Hal yang sama berlaku untuk aplikasi Android yang berjalan di Chromebook: sistem mengelola tugas, atau grup tugas, per jendela.
Rangkuman siklus proses
Untuk meringkas perilaku default aktivitas dan tugas:
Saat Aktivitas A memulai Aktivitas B, Aktivitas A akan dihentikan, tetapi sistem mempertahankan statusnya, seperti posisi scroll dan teks apa pun yang dimasukkan ke dalam formulir. Jika pengguna mengetuk atau menggunakan gestur Kembali saat berada di Aktivitas B, Aktivitas A akan dilanjutkan dengan statusnya dipulihkan.
Saat pengguna meninggalkan tugas menggunakan gestur atau tombol Layar Utama, aktivitas saat ini akan dihentikan dan tugasnya akan beralih ke latar belakang. Sistem mempertahankan status setiap aktivitas dalam tugas. Jika nanti pengguna melanjutkan tugas dengan memilih ikon peluncur yang memulai tugas, tugas akan muncul ke latar depan dan melanjutkan aktivitas di bagian atas tumpukan.
Jika pengguna mengetuk atau memberikan gestur Kembali, aktivitas saat ini akan muncul dari tumpukan dan dihancurkan. Aktivitas sebelumnya dalam tumpukan dilanjutkan. Saat aktivitas dihancurkan, sistem tidak mempertahankan status aktivitas.
Perilaku ini berbeda untuk aktivitas peluncur root saat aplikasi Anda berjalan di perangkat yang menjalankan Android 12 atau yang lebih baru.
Aktivitas bisa dibuat instance-nya beberapa kali, bahkan dari tugas-tugas lainnya.
Mengelola tugas
Android mengelola tugas dan data sebelumnya dengan menempatkan semua aktivitas yang dimulai secara berurutan dalam tugas yang sama, di stack terakhir masuk, pertama keluar. Cara ini sangat cocok untuk sebagian besar aplikasi, dan Anda biasanya tidak perlu mengkhawatirkan bagaimana aktivitas Anda dikaitkan dengan tugas atau bagaimana aktivitas tersebut berada di data sebelumnya.
Namun, Anda mungkin memutuskan ingin menginterupsi perilaku normal. Misalnya, Anda mungkin ingin suatu aktivitas dalam aplikasi memulai tugas baru saat dimulai, bukan ditempatkan dalam tugas saat ini. Atau, saat memulai suatu aktivitas, Anda mungkin ingin meneruskan instance yang ada dari aktivitas tersebut, bukan membuat instance baru di atas data sebelumnya. Atau, Anda mungkin ingin data sebelumnya dihapus dari semua aktivitas kecuali untuk aktivitas root saat pengguna keluar dari tugas.
Anda dapat melakukan hal ini dan lainnya menggunakan atribut dalam
elemen manifes
<activity>
dan flag dalam intent yang Anda teruskan ke
startActivity()
.
Berikut adalah atribut <activity>
utama yang dapat Anda gunakan untuk mengelola tugas:
taskAffinity
launchMode
allowTaskReparenting
clearTaskOnLaunch
alwaysRetainTaskState
finishOnTaskLaunch
Dan berikut adalah flag intent utama yang dapat Anda gunakan:
Bagian berikut membahas cara menggunakan atribut manifes dan flag intent ini untuk menentukan cara aktivitas dikaitkan dengan tugas dan cara perilakunya dalam data sebelumnya.
Pertimbangan tentang cara tugas dan aktivitas diwakili dan dikelola di layar Terbaru. Biasanya, Anda mengizinkan sistem menentukan cara tugas dan aktivitas ditampilkan di layar Terbaru, dan Anda tidak perlu mengubah perilaku ini. Untuk mengetahui informasi selengkapnya, lihat Layar terbaru.
Menentukan mode peluncuran
Mode peluncuran memungkinkan Anda menentukan cara instance baru dari suatu aktivitas dikaitkan dengan tugas saat ini. Anda dapat menentukan mode peluncuran dengan dua cara, yang dijelaskan di bagian berikut:
-
Saat mendeklarasikan aktivitas dalam file manifes, Anda dapat menentukan cara aktivitas dikaitkan dengan tugas saat dimulai.
-
Saat memanggil
startActivity()
, Anda dapat menyertakan flag diIntent
yang mendeklarasikan bagaimana (atau apakah) aktivitas baru terkait dengan tugas saat ini.
Jadi, jika Aktivitas A memulai Aktivitas B, Aktivitas B dapat menentukan hubungannya dengan tugas saat ini dalam manifesnya, dan Aktivitas A dapat menggunakan tanda intent untuk meminta cara mengaitkan Aktivitas B dengan tugas saat ini.
Jika kedua aktivitas menentukan cara Aktivitas B dikaitkan dengan tugas, permintaan Aktivitas A, seperti yang didefinisikan dalam intent, akan lebih diutamakan daripada permintaan Aktivitas B, seperti yang didefinisikan dalam manifesnya.
Menentukan mode peluncuran menggunakan file manifes
Saat mendeklarasikan aktivitas dalam file manifes, Anda dapat menentukan cara
aktivitas terkait dengan tugas menggunakan
atribut launchMode
milik elemen <activity>
.
Ada lima mode peluncuran yang dapat Anda tetapkan ke atribut launchMode
:
"standard"
- Mode default. Sistem membuat instance baru dari aktivitas dalam tugas tempatnya memulai dan mengarahkan intent ke instance tersebut. Aktivitas dapat dibuat instance-nya beberapa kali, setiap instance dapat menjadi milik tugas yang berbeda, dan satu tugas dapat memiliki beberapa instance.
"singleTop"
- Jika instance aktivitas sudah ada di bagian atas tugas saat ini,
sistem akan mengarahkan intent ke instance tersebut melalui panggilan ke metode
onNewIntent()
, bukan membuat instance aktivitas baru. Aktivitas dibuat instance-nya beberapa kali, setiap instance dapat menjadi milik beberapa tugas yang berbeda, dan satu tugas dapat memiliki beberapa instance (tetapi hanya jika aktivitas di bagian atas data sebelumnya bukan merupakan instance aktivitas yang ada).
Misalnya, data sebelumnya tugas terdiri dari aktivitas root A dengan aktivitas B, C, dan D di atasnya (sehingga stack-nya adalah A-B-C-D, dengan D di atasnya). Intent tiba untuk aktivitas jenis D. Jika D memiliki mode peluncuran
"standard"
default, instance class baru akan diluncurkan, dan stack-nya menjadi A-B-C-D-D. Namun, jika mode peluncuran D adalah"singleTop"
, instance D yang ada akan menerima intent melaluionNewIntent()
, karena berada di bagian atas tumpukan, dan stack tetap A-B-C-D. Di sisi lain, jika intent diterima aktivitas jenis B, instance B baru akan ditambahkan ke stack meskipun mode peluncurannya adalah"singleTop"
."singleTask"
- Sistem membuat aktivitas di root tugas baru atau menemukan
aktivitas pada tugas yang ada dengan afinitas yang sama. Jika instance
aktivitas sudah ada, sistem akan merutekan
intent ke instance yang ada melalui panggilan ke
metode
onNewIntent()
, bukan membuat instance baru. Sementara itu semua aktivitas lain di atasnya yang rusak.
"singleInstance"
.- Perilaku ini sama seperti
"singleTask"
, hanya saja sistem tidak meluncurkan aktivitas lain ke tugas yang memiliki instance tersebut. Aktivitas akan selalu tunggal dan merupakan satu-satunya anggota tugasnya. Setiap aktivitas yang dimulai dengan ini akan terbuka di tugas terpisah.
"singleInstancePerTask"
.- Aktivitas hanya dapat berjalan sebagai aktivitas root tugas, aktivitas
pertama yang membuat tugas. Oleh karena itu, hanya boleh ada satu instance
dari aktivitas ini dalam tugas. Berbeda dengan mode peluncuran
singleTask
, aktivitas ini dapat dimulai dalam beberapa instance dalam tugas yang berbeda jika tandaFLAG_ACTIVITY_MULTIPLE_TASK
atauFLAG_ACTIVITY_NEW_DOCUMENT
ditetapkan.
Sebagai contoh lain, aplikasi Browser Android mendeklarasikan bahwa aktivitas browser web
selalu terbuka pada tugasnya sendiri dengan menentukan mode peluncuran singleTask
di elemen
<activity>
. Artinya, jika aplikasi Anda mengeluarkan intent untuk membuka Browser
Android, aktivitasnya tidak ditempatkan dalam tugas yang sama dengan aplikasi Anda. Sebagai gantinya,
tugas baru akan dimulai untuk Browser atau, jika Browser sudah memiliki tugas
yang berjalan di latar belakang, tugas tersebut akan dimajukan untuk menangani intent
baru.
Terlepas dari apakah aktivitas dimulai pada tugas baru atau dalam tugas yang sama dengan
aktivitas yang memulainya, tombol Kembali dan gestur selalu membawa
pengguna ke aktivitas sebelumnya. Namun, jika Anda memulai aktivitas yang
menentukan
mode peluncuran singleTask
dan instance aktivitas tersebut ada dalam
tugas latar belakang, seluruh tugas tersebut akan dibawa ke latar depan. Pada tahap ini,
data sebelumnya mencakup semua aktivitas dari tugas yang dipindah ke
atas stack. Gambar 4 menunjukkan jenis skenario ini.
Untuk mengetahui informasi selengkapnya mengenai penggunaan mode peluncuran dalam file manifes, lihat
dokumentasi elemen <activity>
.
Menentukan mode peluncuran menggunakan flag Intent
Saat memulai aktivitas, Anda dapat mengubah pengaitan default aktivitas
ke tugasnya dengan menyertakan flag dalam intent yang Anda kirimkan ke
startActivity()
.
Tanda yang dapat Anda gunakan untuk mengubah perilaku default adalah sebagai berikut:
FLAG_ACTIVITY_NEW_TASK
Sistem memulai aktivitas dalam tugas baru. Jika tugas sudah berjalan untuk aktivitas yang dimulai, tugas tersebut akan dipindahkan ke latar depan dengan status terakhir dipulihkan, dan aktivitas menerima intent baru di
onNewIntent()
.Hal ini menghasilkan perilaku yang sama dengan nilai
"singleTask"
launchMode
yang dibahas di bagian sebelumnya.FLAG_ACTIVITY_SINGLE_TOP
Jika aktivitas yang dimulai adalah aktivitas saat ini, di bagian atas data sebelumnya, instance yang ada akan menerima panggilan ke
onNewIntent()
, bukan membuat instance baru dari aktivitas tersebut.Hal ini menghasilkan perilaku yang sama dengan nilai
"singleTop"
launchMode
yang dibahas di bagian sebelumnya.FLAG_ACTIVITY_CLEAR_TOP
Jika aktivitas yang dimulai sudah berjalan dalam tugas saat ini, sistem akan menghancurkan semua aktivitas lain di atasnya, bukan meluncurkan instance baru aktivitas tersebut. Intent dikirimkan ke instance aktivitas yang dilanjutkan, yang sekarang berada di bagian atas, melalui
onNewIntent()
.Tidak ada nilai untuk atribut
launchMode
yang menghasilkan perilaku ini.FLAG_ACTIVITY_CLEAR_TOP
paling sering digunakan bersama denganFLAG_ACTIVITY_NEW_TASK
. Saat digunakan bersama, flag ini menemukan aktivitas yang ada di tugas lain dan menempatkannya pada posisi yang dapat merespons intent.
Menangani minat
Afinitas menunjukkan tugas mana yang "diutamakan" oleh aktivitas. Secara default, semua aktivitas dari aplikasi yang sama memiliki afinitas satu sama lain: mereka "lebih suka" berada dalam tugas yang sama.
Namun, Anda dapat mengubah afinitas default untuk suatu aktivitas. Aktivitas yang ditentukan dalam aplikasi yang berbeda dapat memiliki afinitas yang sama, dan aktivitas yang ditentukan dalam aplikasi yang sama dapat diberi afinitas tugas yang berbeda.
Anda dapat mengubah afinitas aktivitas menggunakan atribut taskAffinity
dari elemen
<activity>
.
Atribut taskAffinity
mengambil nilai string yang harus berbeda dari
nama paket default
yang dideklarasikan dalam elemen <manifest>
, karena sistem menggunakan nama tersebut untuk mengidentifikasi afinitas
tugas default untuk aplikasi.
Afinitas berperan dalam dua keadaan:
Saat intent yang meluncurkan aktivitas berisi flag
FLAG_ACTIVITY_NEW_TASK
.Aktivitas baru, secara default, diluncurkan ke tugas aktivitas yang disebut
startActivity()
. Fungsi ini didorong ke data sebelumnya yang sama dengan pemanggil.Namun, jika intent yang diteruskan ke
startActivity()
berisi flagFLAG_ACTIVITY_NEW_TASK
, sistem akan mencari tugas yang berbeda untuk menampung aktivitas baru. Sering kali, ini adalah tugas baru. Namun, tidak harus selalu demikian. Jika ada tugas yang ada dengan afinitas yang sama seperti aktivitas baru, aktivitas akan diluncurkan ke tugas tersebut. Jika tidak, tugas baru akan dimulai.Jika tanda ini menyebabkan aktivitas memulai tugas baru dan pengguna menggunakan tombol atau gestur Layar Utama untuk meninggalkannya, harus ada cara bagi pengguna untuk menavigasi kembali ke tugas. Beberapa entity, seperti pengelola notifikasi, selalu memulai aktivitas dalam tugas eksternal, bukan sebagai bagian dari tugasnya sendiri, sehingga selalu memasukkan
FLAG_ACTIVITY_NEW_TASK
dalam intent yang diteruskan kestartActivity()
.Jika entity eksternal yang mungkin menggunakan flag ini dapat memanggil aktivitas Anda, pastikan pengguna memiliki cara independen untuk kembali ke tugas yang dimulai, seperti dengan ikon peluncur, tempat aktivitas root tugas memiliki filter intent
CATEGORY_LAUNCHER
. Untuk mengetahui informasi selengkapnya, lihat bagian tentang memulai tugas.Jika aktivitas memiliki atribut
allowTaskReparenting
yang disetel ke"true"
.Dalam hal ini, aktivitas dapat berpindah dari tugas yang dimulainya ke tugas yang memiliki afinitas ketika tugas tersebut berada di latar depan.
Misalnya, aktivitas yang melaporkan kondisi cuaca di kota-kota tertentu didefinisikan sebagai bagian dari aplikasi perjalanan. Aktivitas tersebut memiliki afinitas yang sama dengan aktivitas lain dalam aplikasi yang sama, yaitu afinitas aplikasi default, dan dapat di-reparent dengan atribut ini.
Saat salah satu aktivitas memulai aktivitas reporter cuaca, aktivitas tersebut awalnya merupakan tugas yang sama dengan aktivitas Anda. Namun, saat tugas aplikasi perjalanan berada di latar depan, aktivitas reporter cuaca ditetapkan ulang ke tugas tersebut dan ditampilkan di dalamnya.
Menghapus data sebelumnya
Jika pengguna meninggalkan tugas dalam waktu yang lama, sistem akan menghapus tugas semua aktivitas kecuali aktivitas root. Saat pengguna kembali ke tugas, hanya aktivitas root yang dipulihkan. Sistem berperilaku seperti ini berdasarkan asumsi bahwa setelah waktu yang lama, pengguna akan mengabaikan apa yang mereka lakukan sebelumnya dan kembali ke tugas untuk memulai sesuatu yang baru.
Ada beberapa atribut aktivitas yang bisa Anda gunakan untuk memodifikasi perilaku ini:
alwaysRetainTaskState
- Jika atribut ini ditetapkan ke
"true"
dalam aktivitas root tugas, perilaku default yang baru saja dijelaskan tidak akan terjadi. Tugas ini mempertahankan semua aktivitas dalam stack-nya bahkan setelah jangka waktu yang lama. clearTaskOnLaunch
Jika atribut ini ditetapkan ke
"true"
dalam aktivitas root suatu tugas, tugas akan dihapus hingga aktivitas root setiap kali pengguna meninggalkan tugas dan kembali ke tugas tersebut. Dengan kata lain, hal ini kebalikan darialwaysRetainTaskState
. Pengguna selalu kembali ke tugas dalam status awal, bahkan setelah meninggalkan tugas hanya untuk sesaat.finishOnTaskLaunch
Atribut ini seperti
clearTaskOnLaunch
, tetapi beroperasi pada satu aktivitas, bukan seluruh tugas. Hal ini juga dapat menyebabkan aktivitas apa pun selesai, kecuali aktivitas root. Jika ditetapkan ke"true"
, aktivitas akan tetap menjadi bagian dari tugas hanya untuk sesi saat ini. Jika pengguna keluar lalu kembali ke tugas tersebut, tugas tersebut tidak akan ada lagi.
Memulai tugas
Anda dapat menyiapkan aktivitas sebagai titik entri untuk tugas dengan memberinya filter
intent dengan "android.intent.action.MAIN"
sebagai tindakan yang ditentukan dan
"android.intent.category.LAUNCHER"
sebagai kategori yang ditentukan:
<activity ... >
<intent-filter ... >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
...
</activity>
Filter intent semacam ini menyebabkan ikon dan label untuk aktivitas ditampilkan di peluncur aplikasi, sehingga pengguna dapat meluncurkan aktivitas dan kembali ke tugas yang dibuatnya kapan saja setelah diluncurkan.
Kemampuan kedua ini penting. Pengguna harus dapat keluar dari tugas, lalu
kembali ke tugas tersebut nanti menggunakan peluncur aktivitas ini. Karena alasan ini, hanya gunakan
dua
mode peluncuran yang menandai aktivitas sebagai selalu memulai tugas, "singleTask"
dan "singleInstance"
, saat aktivitas memiliki
filter
ACTION_MAIN
dan
CATEGORY_LAUNCHER
.
Bayangkan, misalnya, apa yang mungkin terjadi jika filter tidak ada: intent
meluncurkan aktivitas "singleTask"
, memulai tugas baru, dan pengguna
menghabiskan waktu untuk mengerjakan tugas tersebut. Pengguna kemudian menggunakan gestur atau
tombol Layar Utama. Tugas kini dikirim ke latar belakang dan tidak terlihat. Sekarang pengguna
tidak memiliki cara untuk kembali ke tugas, karena tidak direpresentasikan dalam peluncur
aplikasi.
Untuk kasus ketika Anda tidak ingin pengguna dapat kembali ke suatu
aktivitas, setel finishOnTaskLaunch
elemen <activity>
ke "true"
. Untuk mengetahui informasi selengkapnya, lihat bagian tentang menghapus data sebelumnya.
Informasi lebih lanjut tentang cara tugas dan aktivitas ditampilkan dan dikelola di layar Terbaru tersedia di layar Terbaru.