Tugas adalah kumpulan aktivitas yang berinteraksi dengan pengguna saat mencoba melakukan sesuatu di aplikasi Anda. Aktivitas ini disusun dalam tumpukan yang disebut aktivitas data sebelumnya sesuai urutan setiap aktivitas dibuka.
Misalnya, aplikasi email mungkin memiliki satu aktivitas untuk menampilkan daftar pesan baru. Saat pengguna memilih , aktivitas baru akan terbuka untuk melihat pesan tersebut. Aktivitas baru ini ditambahkan ke data sebelumnya. Kemudian, ketika pengguna mengetuk atau gestur Kembali, aktivitas baru itu selesai dan dimunculkan dari tumpukan.
Siklus proses tugas dan data sebelumnya
Layar Utama perangkat adalah tempat awal bagi sebagian besar tugas. Saat pengguna menyentuh ikon untuk aplikasi atau pintasan dalam peluncur aplikasi atau di layar Beranda, tugas aplikasi itu muncul di latar depan. Jika tidak ada tugas untuk aplikasi, maka tugas baru dibuat dan bagian utama aktivitas untuk aplikasi tersebut akan terbuka sebagai aktivitas root dalam tumpukan.
Jika aktivitas saat ini memulai aktivitas lain, aktivitas baru akan didorong ke atas dari tumpukan dan mengambil fokus. Aktivitas sebelumnya tetap berada dalam tumpukan, tetapi dihentikan. Bila aktivitas dihentikan, sistem akan mempertahankan status saat ini API melalui antarmuka pengguna grafis. Ketika pengguna melakukan tindakan kembali, aktivitas saat ini akan muncul dari atas tumpukan dan dihancurkan. Tujuan aktivitas sebelumnya dilanjutkan, dan status UI sebelumnya akan dipulihkan.
Aktivitas di tumpukan tidak pernah diatur ulang, hanya didorong ke dan muncul dari tumpukan sebagaimana adanya dimulai oleh aktivitas saat ini dan ditutup oleh pengguna melalui tombol atau gestur Kembali. 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.
![](https://developer.android.google.cn/static/images/fundamentals/diagram_backstack.png?authuser=0000&hl=id)
Saat pengguna terus mengetuk atau melakukan gestur Kembali, setiap aktivitas dalam tumpukan dibuka untuk menampilkan dialog sebelumnya, hingga pengguna kembali ke layar atau ke aktivitas mana pun yang sedang berjalan saat tugas dimulai. Jika semua aktivitas dihapus dari tumpukan, tugas sudah tidak ada.
Perilaku ketuk kembali untuk aktivitas peluncur root
Aktivitas peluncur root adalah aktivitas yang mendeklarasikan intent
filter dengan
ACTION_MAIN
dan
CATEGORY_LAUNCHER
Aktivitas ini unik karena bertindak sebagai titik masuk ke aplikasi Anda dari
peluncur aplikasi dan digunakan untuk memulai tugas.
Ketika pengguna mengetuk atau memberi gestur Kembali dari aktivitas peluncur root, sistem menangani peristiwa secara berbeda bergantung pada versi Android yang perangkat berjalan.
- 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 ini. Perilaku ini cocok dengan perilaku sistem {i>default<i} saat keluar dari aplikasi menggunakan tombol atau gestur Beranda.
Pada sebagian besar kasus, perilaku ini berarti pengguna dapat melanjutkan aplikasi Anda dengan lebih cepat dari kondisi hangat, bukan harus memulai ulang aplikasi sepenuhnya dari cold status
Jika Anda perlu menyediakan navigasi kembali kustom, sebaiknya gunakan AndroidX Activity API daripada
onBackPressed()
. AndroidX Activity API secara otomatis mematuhi perilaku sistem yang sesuai jika tidak ada komponen yang mencegat sistem Ketuk belakang.Namun, jika aplikasi Anda mengganti
onBackPressed()
untuk ditangani Navigasi kembali dan selesaikan aktivitas, perbarui implementasi Anda untuk memanggil sampai kesuper.onBackPressed()
, bukan selesai. Meneleponsuper.onBackPressed()
akan memindahkan aktivitas dan tugasnya ke latar belakang jika dan memberikan pengalaman navigasi yang lebih konsisten untuk pengguna di seluruh aplikasi.
Tugas latar belakang dan latar depan
![](https://developer.android.google.cn/static/images/fundamentals/diagram_multitasking.png?authuser=0000&hl=id)
Tugas adalah unit kohesif yang dapat dipindahkan ke latar belakang saat pengguna memulai tugas baru atau masuk ke Layar utama. Saat berada di latar belakang, semua aktivitas dalam tugas dihentikan, tetapi data sebelumnya untuk tugas tetap utuh—tugas kehilangan fokus saat tugas lain berlangsung, seperti yang ditunjukkan pada gambar 2. J tugas dapat kembali ke latar depan sehingga pengguna dapat melanjutkan dari posisi terakhir nonaktif.
Pertimbangkan alur tugas berikut untuk Tugas A saat ini yang memiliki tiga aktivitas dalam tumpukannya, termasuk dua aktivitas di bawah aktivitas saat ini:
Pengguna menggunakan tombol Layar utama atau gestur, lalu memulai aplikasi baru dari peluncur aplikasi lainnya.
Saat Layar utama muncul, Tugas A akan dipindahkan ke latar belakang. Ketika aplikasi dimulai, sistem memulai tugas untuk aplikasi tersebut (Tugas B) dengan stack-nya sendiri aktivitas Anda.
Setelah berinteraksi dengan aplikasi tersebut, pengguna kembali ke Beranda lagi dan memilih aplikasi yang awalnya memulai Tugas A.
Sekarang, Tugas A muncul di latar depan—ketiga aktivitas dalam tumpukan utuh, dan aktivitas di bagian atas tumpukan dilanjutkan. Pada tahap ini, pengguna juga dapat beralih kembali ke Tugas B dengan membuka Beranda dan memilih ikon aplikasi yang memulai tugas tersebut atau dengan memilih tugas aplikasi dari tab layar.
Beberapa instance aktivitas
![](https://developer.android.google.cn/static/images/fundamentals/diagram_multiple_instances.png?authuser=0000&hl=id)
Karena aktivitas di data sebelumnya tidak pernah diatur ulang, jika aplikasi Anda memungkinkan pengguna memulai aktivitas tertentu dari lebih dari satu aktivitas, instance aktivitas tersebut dibuat dan didorong ke tumpukan, bukan membawa instance aktivitas sebelumnya ke atas. Dengan demikian, satu di aplikasi Anda mungkin dibuat instance-nya beberapa kali, bahkan dari tugas, seperti yang ditunjukkan pada gambar 3.
Jika pengguna menavigasi mundur menggunakan tombol Kembali tombol atau {i>gesture <i}itu, {i>instance<i} aktivitas ditampilkan dalam urutan dibuka, masing-masing dengan status UI-nya sendiri. Namun, Anda dapat memodifikasi ini jika Anda tidak ingin aktivitas dibuat instance-nya lebih dari sekali. Pelajari selengkapnya di bagian tentang mengelola tugas.
Lingkungan multi-aplikasi
Saat aplikasi berjalan secara bersamaan dalam multi-aplikasi , didukung di Android 7.0 (API level 24) dan yang lebih tinggi, sistem akan mengelola tugas secara terpisah untuk setiap jendela. Masing-masing dapat memiliki beberapa tugas. Hal yang sama berlaku untuk aplikasi Android yang berjalan di Chromebook: sistem mengelola tugas atau grup tugas per jendela.
Rekap siklus proses
Ringkasan perilaku default untuk aktivitas dan tugas:
Saat Aktivitas A memulai Aktivitas B, Aktivitas A 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 dilanjutkan dengan status dipulihkan.
Saat pengguna meninggalkan tugas menggunakan gestur atau tombol Layar Utama, aktivitas dihentikan dan tugasnya berpindah ke latar belakang. Sistem mempertahankan status setiap aktivitas dalam tugas. Jika nanti pengguna melanjutkan tugas dengan memilih ikon peluncur yang memulai tugas, tugas tersebut akan masuk ke latar depan dan melanjutkan aktivitas di bagian atas tumpukan.
Jika pengguna mengetuk atau memberi gestur Kembali, aktivitas saat ini akan dimunculkan dari tumpukan itu dan dihancurkan. Aktivitas sebelumnya dalam tumpukan akan dilanjutkan. Kapan 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 dapat dibuat instance-nya beberapa kali, bahkan dari tugas lainnya.
Kelola tugas
Android mengelola tugas dan data sebelumnya dengan menempatkan semua aktivitas dimulai berturut-turut dalam tugas yang sama, dalam yang terakhir di, pertama {i>out stack<i}. Ini bekerja dengan sangat baik untuk sebagian besar aplikasi, dan Anda biasanya tidak perlu khawatir tentang bagaimana aktivitas Anda dikaitkan dengan tugas atau bagaimana aktivitas tersebut ada di belakang {i>stack<i}.
Namun, Anda dapat memutuskan bahwa Anda ingin menghentikan perilaku normal tersebut. Misalnya, Anda mungkin ingin suatu aktivitas di aplikasi memulai tugas baru saat memulai, alih-alih ditempatkan dalam tugas saat ini. Atau, ketika Anda memulai aktivitas Anda, Anda mungkin ingin meneruskan instance yang sudah ada darinya, daripada membuat instance baru di atas data sebelumnya. Atau Anda mungkin ingin data sebelumnya dihapus dari semua aktivitas kecuali untuk aktivitas root saat pengguna meninggalkan tugas.
Anda dapat melakukan hal ini dan yang lainnya dengan menggunakan atribut dalam
Elemen manifes <activity>
dan flag dalam intent yang Anda teruskan
startActivity()
.
Berikut adalah atribut <activity>
utama yang dapat Anda gunakan untuk mengelola tugas:
taskAffinity
launchMode
allowTaskReparenting
clearTaskOnLaunch
alwaysRetainTaskState
finishOnTaskLaunch
Berikut adalah flag intent utama yang dapat Anda gunakan:
Bagian berikut membahas cara menggunakan atribut manifes ini dan flag intent untuk mendefinisikan bagaimana aktivitas dikaitkan dengan tugas dan bagaimana aktivitas tersebut berperilaku di data sebelumnya.
Juga dibahas tentang pertimbangan bagaimana tugas dan aktivitas ditampilkan dan dikelola di layar Terbaru. Biasanya, Anda membiarkan mendefinisikan bagaimana tugas dan aktivitas Anda diwakili dalam Layar terbaru, dan Anda tidak perlu mengubah perilaku ini. Untuk selengkapnya informasi, lihat Layar Terbaru.
Menentukan mode peluncuran
Mode peluncuran memungkinkan Anda mendefinisikan cara mengaitkan instance baru dari suatu aktivitas dengan tugas saat ini. Anda dapat menentukan mode peluncuran dengan dua cara, dijelaskan di bagian berikut ini:
-
Saat mendeklarasikan aktivitas dalam file manifes, Anda bisa menentukan cara yang terkait dengan tugas saat dimulai.
-
Saat Anda menelepon
startActivity()
, Anda dapat menyertakan penanda diIntent
yang mendeklarasikan bagaimana (atau apakah) aktivitas baru yang terkait dengan tugas saat ini.
Jadi, jika Aktivitas A memulai Aktivitas B, Aktivitas B dapat menentukan dalam manifesnya bagaimana mengaitkannya dengan tugas saat ini, dan Aktivitas A dapat menggunakan flag intent untuk meminta bagaimana Aktivitas B dapat dikaitkan dengan tugas saat ini.
Jika keduanya mendefinisikan bagaimana Aktivitas B dikaitkan dengan tugas, maka aktivitas A seperti yang didefinisikan dalam intent, dipatuhi atas permintaan Aktivitas B, karena yang ditentukan dalam manifesnya.
Menentukan mode peluncuran menggunakan file manifes
Saat mendeklarasikan aktivitas dalam file manifes, Anda bisa menentukan cara
yang terkait dengan tugas menggunakan
Elemen <activity>
launchMode
.
Ada lima mode peluncuran yang dapat Anda tetapkan ke atribut launchMode
:
"standard"
- Mode default. Sistem membuat instance baru dari aktivitas dalam tugas tujuan itu dimulai dan mengarahkan intent ke sana. Aktivitas ini dapat berupa dibuat instance-nya beberapa kali, setiap {i>instance<i} bisa menjadi milik tugas yang berbeda, dan satu tugas dapat memiliki beberapa instance.
"singleTop"
- Jika sebuah instance aktivitas sudah ada di bagian atas tugas saat ini,
sistem akan mengarahkan intent ke instance tersebut melalui panggilan ke instance
onNewIntent()
, bukan membuat instance baru dari aktivitas. Aktivitas ini dibuat instance-nya beberapa kali, setiap {i>instance<i} bisa menjadi milik tugas yang berbeda, dan satu tugas dapat memiliki beberapa instance (tetapi hanya jika aktivitas di bagian atas data sebelumnya bukan instance aktivitas yang ada).
Misalnya, anggap saja data sebelumnya tugas terdiri dari aktivitas root A dengan aktivitas B, C, dan D di bagian atas (jadi tumpukan adalah A-B-C-D, dengan D di bagian atas). Intent tiba untuk aktivitas tipe D. Jika D memiliki peluncuran
"standard"
default , instance class baru akan diluncurkan, dan stack menjadi A-B-C-D-D. Namun, jika mode peluncuran D adalah"singleTop"
, instance D yang ada menerima intent melaluionNewIntent()
, karena terletak di bagian atas tumpukan, dan tumpukan tetap A-B-C-D. Jika, untuk perusahaan televisi, intent diterima untuk aktivitas tipe B, lalu instance B baru ditambahkan ke stack meskipun mode peluncurannya adalah"singleTop"
."singleTask"
- Sistem membuat aktivitas di root tugas baru atau menemukan lokasi
aktivitas pada tugas yang ada dengan afinitas yang sama. Jika instance
jika aktivitas sudah ada, sistem akan merutekan
ke instance yang ada melalui panggilan ke instance
onNewIntent()
, bukan membuat instance baru. Sementara itu, semua aktivitas di atasnya akan dihancurkan.
"singleInstance"
.- Perilaku ini sama seperti
"singleTask"
, hanya saja sistem tidak meluncurkan aktivitas ke tugas yang memiliki {i>instance<i}. Aktivitas akan selalu tunggal dan merupakan satu-satunya anggota tugasnya. Aktivitas apa pun yang dimulai oleh aktivitas ini dibuka di tugas terpisah.
"singleInstancePerTask"
.- Aktivitas hanya dapat berjalan sebagai aktivitas root dari tugas, yang pertama
aktivitas yang membuat tugas, dan karena itu hanya boleh ada satu instance
aktivitas ini dalam tugas. Berbeda dengan mode peluncuran
singleTask
, aktivitas dapat dimulai dalam beberapa instance dalam tugas yang berbeda jikaFLAG_ACTIVITY_MULTIPLE_TASK
atauFLAG_ACTIVITY_NEW_DOCUMENT
flag disetel.
Sebagai contoh lain, aplikasi Browser Android mendeklarasikan bahwa browser web
aktivitas selalu terbuka dalam tugasnya sendiri dengan menetapkan singleTask
mode peluncuran di <activity>
. Ini berarti bahwa jika aplikasi Anda mengeluarkan intent untuk membuka Android
Browser, aktivitasnya tidak ditempatkan dalam tugas yang sama dengan aplikasi Anda. Sebagai gantinya,
tugas baru akan dimulai untuk Browser atau, jika Browser sudah memiliki tugas
berjalan di latar belakang, tugas tersebut dimajukan untuk menangani
intent.
Terlepas dari apakah suatu aktivitas dimulai pada tugas baru atau pada tugas yang sama dengan
aktivitas yang memulainya, tombol Kembali dan {i>gesture <i}selalu mengambil
pengguna ke aktivitas sebelumnya. Namun, jika Anda memulai aktivitas yang
menentukan
mode peluncuran singleTask
dan instance aktivitas tersebut ada di
tugas latar belakang, maka seluruh tugas itu
dibawa ke latar depan. Pada tahap ini,
data sebelumnya mencakup semua aktivitas dari tugas yang dimajukan di
bagian atas tumpukan. Gambar 4 menunjukkan jenis skenario ini.
![](https://developer.android.google.cn/static/images/fundamentals/diagram_backstack_singletask_multiactivity.png?authuser=0000&hl=id)
"singleTask"
ditambahkan ke data sebelumnya. Jika aktivitas
sudah menjadi bagian dari tugas latar belakang
dengan {i>back stack<i}-nya sendiri, maka
seluruh data sebelumnya juga akan
muncul, di atas semua
tugas.Untuk informasi selengkapnya tentang menggunakan mode peluncuran dalam file manifes, lihat
Dokumentasi elemen <activity>
.
Menentukan mode peluncuran menggunakan flag Intent
Saat memulai suatu aktivitas, Anda dapat mengubah pengaitan default aktivitas
pada tugasnya dengan menyertakan penanda
dalam maksud yang akan Anda sampaikan
startActivity()
Flag yang dapat Anda gunakan untuk memodifikasi perilaku default adalah sebagai berikut:
FLAG_ACTIVITY_NEW_TASK
Sistem memulai aktivitas dalam tugas baru. Jika tugas sudah berjalan untuk jika aktivitas dimulai, tugas tersebut akan dibawa ke latar depan dengan status terakhir dipulihkan, dan aktivitas menerima intent baru di
onNewIntent()
Tindakan ini menghasilkan perilaku yang sama dengan
"singleTask"
NilailaunchMode
dibahas di bagian sebelumnya.FLAG_ACTIVITY_SINGLE_TOP
Jika aktivitas yang dimulai adalah aktivitas saat ini, di bagian atas belakang maka instance yang ada akan menerima panggilan ke
onNewIntent()
, bukan membuat instance baru dari aktivitas.Tindakan ini menghasilkan perilaku yang sama dengan
"singleTop"
NilailaunchMode
yang dibahas di bagian sebelumnya.FLAG_ACTIVITY_CLEAR_TOP
Jika aktivitas yang dimulai sudah berjalan di tugas saat ini, maka—alih-alih meluncurkan instance baru dari aktivitas tersebut— sistem menghancurkan semua aktivitas lain di atasnya. Tujuannya adalah dikirim ke instance aktivitas yang dilanjutkan, sekarang di 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, tanda-tanda ini menemukan aktivitas yang ada di tugas lain dan menempatkannya pada posisi yang dapat merespons intent tersebut.
Menangani minat
Afinitas menunjukkan tugas mana yang "lebih disukai" oleh aktivitas menjadi anggotanya. Menurut secara default, semua aktivitas dari aplikasi yang sama saling terkait: mereka “lebih memilih” berada dalam tugas yang sama.
Namun, Anda dapat mengubah afinitas default untuk suatu aktivitas. Aktivitas yang ditentukan di aplikasi yang berbeda dapat berbagi afinitas, dan aktivitas yang ditentukan dalam aplikasi yang sama dapat diberikan afinitas tugas yang berbeda.
Anda dapat mengubah afinitas aktivitas menggunakan taskAffinity
dari <activity>
.
Atribut taskAffinity
mengambil nilai string yang harus berbeda dari
nama paket default
yang dideklarasikan dalam <manifest>
karena sistem menggunakan nama itu untuk mengidentifikasi tugas {i>default<i}
minat terhadap aplikasi.
Afinitas berperan dalam dua situasi:
Saat intent yang meluncurkan aktivitas berisi
FLAG_ACTIVITY_NEW_TASK
penanda.Sebuah aktivitas baru, secara {i>default<i}, diluncurkan ke dalam tugas aktivitas yang disebut
startActivity()
Alamat ini didorong ke data sebelumnya yang sama dengan pemanggil.Namun, jika intent yang diteruskan ke
startActivity()
berisiFLAG_ACTIVITY_NEW_TASK
sistem 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 dengan aktivitas baru, aktivitas diluncurkan ke dalam tugas tersebut. Jika tidak, tugas baru akan dimulai.Jika flag ini menyebabkan aktivitas memulai tugas baru dan pengguna menggunakan Tombol layar utama atau {i>gesture <i}untuk meninggalkannya, harus ada cara bagi pengguna untuk kembali ke tugas. Beberapa entitas, seperti pengelola notifikasi, selalu memulai aktivitas dalam tugas eksternal, bukan sebagai bagian dari tugasnya sendiri, jadi objek tersebut selalu menempatkan
FLAG_ACTIVITY_NEW_TASK
di intent yang diteruskanstartActivity()
.Jika entitas eksternal yang mungkin menggunakan penanda ini bisa memanggil aktivitas Anda, pastikan pengguna memiliki cara independen untuk kembali ke tugas yang dimulai, seperti dengan ikon peluncur, di mana aktivitas {i>root<i} dari tugas tersebut memiliki
CATEGORY_LAUNCHER
filter intent. Untuk mengetahui informasi selengkapnya, lihat bagian tentang memulai tugas.Saat suatu aktivitas memiliki
allowTaskReparenting
disetel ke"true"
.Dalam hal ini, aktivitas dapat dipindahkan dari tugas yang dimulainya ke tugas yang dimilikinya afinitas saat tugas itu diajukan ke latar depan.
Misalnya, suatu aktivitas yang melaporkan kondisi cuaca di kota yang dipilih ditetapkan sebagai bagian dari aplikasi perjalanan. Memiliki afinitas yang sama seperti aktivitas lain dalam aplikasi yang sama, afinitas aplikasi default, dan dapat di-reparent dengan atribut ini.
Saat salah satu aktivitas Anda memulai aktivitas laporan cuaca, awalnya memiliki tugas yang sama dengan aktivitas Anda. Namun, saat tugas aplikasi perjalanan muncul di latar depan, aktivitas pelapor cuaca ditetapkan ulang ke tugas itu dan ditampilkan di dalamnya.
Menghapus data sebelumnya
Jika pengguna meninggalkan tugas dalam waktu yang lama, sistem akan menghapus tugas dari aktivitas kecuali aktivitas root. Ketika pengguna kembali ke tugas, hanya aktivitas {i>root <i}yang dipulihkan. Sistem berperilaku seperti ini berdasarkan asumsi bahwa setelah lamanya waktu pengguna telah mengabaikan apa yang mereka lakukan sebelumnya dan kembali ke tugas itu 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 {i>default<i} yang baru saja dijelaskan tidak 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 tugas, tugas hingga ke aktivitas {i>root <i}setiap kali pengguna meninggalkan tugas dan akan kembali ke sana. Dengan kata lain, hal itu adalah kebalikan darialwaysRetainTaskState
. Tujuan pengguna selalu kembali ke tugas dalam keadaan awal, bahkan setelah meninggalkan tugas ini sejenak.finishOnTaskLaunch
Atribut ini seperti
clearTaskOnLaunch
, tetapi beroperasi pada satu aktivitas, bukan seluruh tugas. Hal ini juga dapat menyebabkan aktivitas apa pun yang akan diselesaikan kecuali aktivitas root. Bila sudah diatur ke"true"
, aktivitas tetap menjadi bagian dari tugas hanya untuk sesi saat ini. Jika pengguna keluar lalu kembali ke tugas, tugas tersebut tidak lagi ada.
Memulai tugas
Anda dapat menyiapkan aktivitas sebagai titik entri untuk tugas dengan memberinya intent
filter 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 di peluncur aplikasi, sehingga memberi cara bagi pengguna untuk meluncurkan aktivitas dan kembali ke tugas yang dibuatnya kapan saja setelah diluncurkan.
Kemampuan kedua ini penting. Pengguna harus dapat meninggalkan tugas dan kemudian
kembali lagi nanti menggunakan peluncur aktivitas ini. Karena alasan ini, hanya gunakan
keduanya
mode peluncuran yang menandai aktivitas sebagai selalu memulai tugas, "singleTask"
dan "singleInstance"
, jika aktivitas memiliki
ACTION_MAIN
dan
CATEGORY_LAUNCHER
filter.
Bayangkan, misalnya, apa yang mungkin terjadi jika filter tidak ada: sebuah
intent meluncurkan aktivitas "singleTask"
, memulai tugas baru, dan pengguna
menghabiskan beberapa waktu
untuk mengerjakan tugas itu. Pengguna kemudian
menggunakan tombol Beranda atau
{i>gesture <i}ini. Sekarang tugas dikirim ke latar belakang dan tidak terlihat. Sekarang pengguna
tidak memiliki cara untuk kembali ke tugas, karena tidak direpresentasikan dalam aplikasi
peluncur.
Untuk kasus di mana Anda tidak ingin pengguna dapat kembali ke
aktivitas, setel <activity>
finishOnTaskLaunch
milik elemen
ke "true"
. Untuk mengetahui informasi selengkapnya, lihat bagian tentang menghapus data sebelumnya.
Informasi lebih lanjut tentang bagaimana tugas dan aktivitas diwakili dan dikelola di layar Terbaru tersedia di Terbaru layar.