Tugas adalah kumpulan aktivitas yang berinteraksi dengan pengguna saat melakukan pekerjaan tertentu. Aktivitas disusun dalam tumpukan—back stack)—dalam urutan setiap aktivitas yang dibuka. Misalnya, aplikasi email mungkin memiliki satu aktivitas untuk menampilkan daftar pesan baru. Saat pengguna memilih pesan, aktivitas baru akan terbuka untuk menampilkan pesan tersebut. Aktivitas baru ini ditambahkan ke back stack. Jika pengguna menekan tombol Kembali, aktivitas baru tersebut akan diakhiri dan dikeluarkan dari tumpukan. Video berikut memberikan ringkasan yang baik tentang cara kerja back stack.
Jika aplikasi berjalan secara bersamaan dalam lingkungan multi-aplikasi, yang didukung di Android 7.0 (API level 24) dan yang lebih tinggi, sistem akan mengelola tugas secara terpisah untuk setiap jendela; masing-masing jendela mungkin memiliki beberapa tugas. Hal yang sama juga berlaku untuk aplikasi Android yang berjalan di Chromebook: sistem mengelola tugas, atau sekumpulan tugas, per-jendela.
Layar Utama perangkat adalah tempat awal bagi sebagian besar tugas. Saat pengguna menyentuh ikon pada peluncur aplikasi (atau pintasan di layar Utama), tugas aplikasi tersebut akan muncul di layar depan. Jika tidak ada tugas untuk aplikasi (aplikasi tidak digunakan baru-baru ini), tugas baru akan dibuat dan aktivitas "utama" aplikasi tersebut dibuka sebagai aktivitas root dalam tumpukan.
Jika aktivitas saat ini memulai aktivitas lain, aktivitas baru didorong ke bagian atas tumpukan dan mengambil fokus. Aktivitas sebelumnya tetap berada dalam tumpukan, tetapi dihentikan. Jika aktivitas berhenti, sistem mempertahankan status antarmuka penggunanya saat ini. Saat pengguna menekan tombol Kembali, aktivitas saat ini dikeluarkan dari bagian atas tumpukan (aktivitas diakhiri) dan aktivitas sebelumnya dilanjutkan (status UI sebelumnya dipulihkan). Aktivitas dalam tumpukan tidak akan disusun ulang, hanya didorong dan dikeluarkan dari tumpukan—didorong ke tumpukan saat dimulai oleh aktivitas saat ini dan dikeluarkan saat pengguna meninggalkannya menggunakan tombol Kembali. Dengan demikian, back stack beroperasi sebagai struktur objek “terakhir masuk, pertama keluar”. Gambar 1 memvisualisasikan perilaku ini dengan linimasa yang menunjukkan progres antara aktivitas beserta back stack saat ini pada waktu tertentu.

Gambar 1. Representasi tentang bagaimana setiap aktivitas baru dalam tugas menambahkan item ke back stack. Saat pengguna menekan tombol Kembali, aktivitas saat ini akan diakhiri dan aktivitas sebelumnya akan dilanjutkan.
Jika pengguna menekan lama tombol Kembali, setiap aktivitas dalam tumpukan akan dikeluarkan untuk menampilkan aktivitas sebelumnya, sampai pengguna kembali ke Layar utama (atau ke aktivitas mana pun yang sedang berjalan saat tugas dimulai). Saat semua aktivitas dihapus dari tumpukan, tugas tidak lagi tersedia.

Gambar 2. Dua tugas: Tugas B menerima interaksi pengguna di latar depan, sementara Tugas A berada di latar belakang, menunggu untuk dilanjutkan.
Tugas adalah unit kohesif yang dapat dipindah ke "latar belakang" saat pengguna memulai tugas baru atau membuka layar Utama, melalui tombol Layar Utama. Saat di latar belakang, semua aktivitas dalam tugas dihentikan, tetapi back stack untuk tugas tetap berjalan—tugas hanya kehilangan fokus saat tugas lain dijalankan, seperti yang ditunjukkan pada gambar 2. Tugas kemudian dapat kembali ke "latar depan", memungkinkan pengguna melanjutkan dari bagian terakhirnya. Anggaplah, misalnya, tugas saat ini (Tugas A) memiliki tiga aktivitas dalam tumpukannya—dua di bawah aktivitas saat ini. Pengguna menekan tombol Layar Utama, lalu memulai aplikasi baru dari peluncur aplikasi. Saat Layar utama muncul, Tugas A akan dipindah 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 tetap berjalan dan aktivitas di bagian atas tumpukan akan 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). Ini adalah contoh multitasking di Android.
Catatan: Beberapa tugas dapat dilakukan di latar belakang sekaligus. Namun, jika pengguna menjalankan banyak tugas latar belakang pada waktu bersamaan, sistem mungkin mulai mengakhiri aktivitas latar belakang untuk memulihkan memori, menyebabkan status aktivitas hilang.

Gambar 3. Suatu aktivitas dibuat instance-nya beberapa kali.
Karena aktivitas di back-stack tidak akan disusun ulang, jika aplikasi Anda memungkinkan pengguna memulai salah satu dari beberapa aktivitas, instance baru dari aktivitas tersebut akan dibuat dan didorong ke tumpukan (bukan memindah instance aktivitas sebelumnya ke atas). Dengan demikian, suatu aktivitas di aplikasi Anda mungkin dibuat instance-nya beberapa kali (bahkan dari tugas yang berbeda), seperti yang ditunjukkan pada gambar 3. Oleh karena itu, jika pengguna menavigasi mundur menggunakan tombol Kembali, setiap instance aktivitas dimunculkan sesuai urutan dibukanya (masing-masing memiliki status UI-nya sendiri). Namun, Anda dapat mengubah perilaku ini jika Anda tidak ingin aktivitas dibuat instance-nya lebih dari sekali. Cara melakukannya dibahas di bagian selanjutnya tentang Mengelola Tugas.
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 yang dimasukkan ke dalam formulir). Jika pengguna menekan tombol Kembali saat berada di Aktivitas B, Aktivitas A akan dilanjutkan dan statusnya akan dipulihkan.
- Saat pengguna keluar dari tugas dengan menekan tombol Layar Utama, aktivitas saat ini dihentikan dan tugas akan dipindah ke latar belakang. Sistem mempertahankan status setiap aktivitas dalam tugas. Jika pengguna nantinya melanjutkan tugas dengan memilih ikon peluncur yang memulai tugas, tugas akan muncul di latar depan dan melanjutkan aktivitas di bagian atas tumpukan.
- Jika pengguna menekan tombol Kembali, aktivitas saat ini akan dikeluarkan dari tumpukan dan diakhiri. Aktivitas sebelumnya dalam tumpukan dilanjutkan. Setelah aktivitas diakhiri, sistem tidak mempertahankan status aktivitas.
- Aktivitas dapat dibuat instance-nya beberapa kali, bahkan dari tugas lainnya.
Desain Navigasi
Untuk informasi selengkapnya tentang cara kerja navigasi aplikasi di Android, baca panduan Navigasi Desain Android.
Mengelola Tugas
Cara Android mengelola tugas dan back stack, seperti yang dijelaskan di atas—dengan menempatkan semua aktivitas yang dimulai secara berurutan dalam tugas yang sama dan dalam tumpukan "masuk terakhir, keluar pertama"—berfungsi optimal untuk sebagian besar aplikasi dan Anda tidak perlu khawatir tentang bagaimana aktivitas Anda dikaitkan dengan tugas atau bagaimana aktivitas tersebut berada di back stack. Namun, Anda mungkin memutuskan ingin mengganggu perilaku normal tersebut. Anda mungkin menginginkan aktivitas di aplikasi memulai tugas baru saat dimulai (daripada ditempatkan dalam tugas saat ini); atau, saat memulai suatu aktivitas, Anda ingin memindah instance-nya yang ada ke depan (daripada membuat instance baru di bagian atas back stack); atau, Anda ingin semua aktivitas dalam back stack dibersihkan kecuali aktivitas root saat pengguna meninggalkan tugas.
Anda dapat melakukan hal ini dan banyak hal lainnya, dengan atribut dalam elemen manifes <activity>
dan dengan flag dalam intent yang Anda teruskan ke startActivity()
.
Dalam hal ini, atribut <activity>
utama yang dapat Anda gunakan adalah:
-
taskAffinity
-
launchMode
-
allowTaskReparenting
-
clearTaskOnLaunch
-
alwaysRetainTaskState
-
finishOnTaskLaunch
Dan flag intent utama yang dapat Anda gunakan adalah:
Pada bagian berikut, Anda akan mempelajari cara menggunakan atribut manifes dan flag intent ini untuk menentukan bagaimana aktivitas dikaitkan dengan tugas dan bagaimana aktivitas tersebut berperilaku di back stack.
Selanjutnya, akan dibahas secara terpisah bagaimana tugas dan aktivitas ditampilkan dan dikelola di layar Terbaru. Lihat Layar Terbaru untuk mengetahui informasi selengkapnya. Biasanya Anda harus mengizinkan sistem untuk menentukan bagaimana tugas dan aktivitas Anda ditampilkan di layar Terbaru, dan Anda tidak perlu mengubah perilaku ini.
Perhatian: Sebagian besar aplikasi tidak boleh mengganggu perilaku default untuk aktivitas dan tugas. Jika memutuskan bahwa aktivitas Anda perlu memodifikasi perilaku default, sebaiknya berhati-hatilah dan pastikan untuk menguji kegunaan aktivitas selama peluncuran dan saat menavigasi kembali dari aktivitas dan tugas lain dengan tombol Kembali. Pastikan untuk menguji perilaku navigasi yang mungkin bertentangan dengan perilaku yang diharapkan pengguna.
Menentukan mode peluncuran
Mode peluncuran memungkinkan Anda menentukan bagaimana instance baru dari suatu aktivitas dikaitkan dengan tugas saat ini. Anda dapat menentukan mode peluncuran yang berbeda dengan dua cara berikut:
- Menggunakan file manifes
Saat mendeklarasikan aktivitas dalam file manifes, Anda dapat menentukan bagaimana aktivitas seharusnya dikaitkan dengan tugas saat dimulai.
- Menggunakan flag Intent
Saat memanggil
startActivity()
, Anda dapat menyertakan flag dalamIntent
yang menyatakan bagaimana (atau apakah) aktivitas baru harus dikaitkan dengan tugas saat ini.
Dengan demikian, jika Aktivitas A memulai Aktivitas B, Aktivitas B dapat menentukan pengaitannya dengan tugas saat ini dalam manifesnya (jika ada) dan Aktivitas A juga dapat meminta pengaitan Aktivitas B dengan tugas saat ini. Jika kedua aktivitas menentukan pengaitan Aktivitas B dengan tugas, permintaan Aktivitas A (sebagaimana didefinisikan dalam intent) lebih diutamakan daripada permintaan Aktivitas B (sebagaimana didefinisikan dalam manifesnya).
Catatan: Beberapa mode peluncuran yang tersedia untuk file manifes tidak tersedia sebagai flag untuk intent dan beberapa mode peluncuran yang tersedia sebagai flag untuk intent tidak dapat ditentukan dalam manifes.
Menggunakan file manifes
Saat mendeklarasikan aktivitas dalam file manifes, Anda dapat menentukan bagaimana aktivitas seharusnya dikaitkan dengan tugas menggunakan atribut launchMode
elemen <activity>
.
Atribut launchMode
menentukan petunjuk tentang bagaimana aktivitas seharusnya diluncurkan ke dalam tugas. Ada empat mode peluncuran berbeda yang dapat Anda tetapkan ke atribut launchMode
:
"standard"
(mode default)- Default. Sistem membuat instance baru aktivitas dalam tugas yang memulainya dan mengarahkan intent-nya ke instance tersebut. Aktivitas dapat membuat instance beberapa kali, setiap instance dapat dimasukkan ke beberapa tugas, 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()
-nya, bukan membuat instance baru dari aktivitas. Aktivitas dapat membuat instance beberapa kali, setiap instance dapat dimasukkan ke berbagai tugas, dan satu tugas dapat memiliki beberapa instance (tetapi hanya jika aktivitas di bagian atas back stack bukan merupakan instance yang ada dari aktivitas tersebut).Misalnya, anggap back stack tugas terdiri dari aktivitas root A dengan aktivitas B, C, dan D di bagian atas (tumpukannya adalah A-B-C-D; D di bagian atas). Intent diterima aktivitas jenis D. Jika D memiliki mode peluncuran
"standard"
default, instance class baru akan diluncurkan dan tumpukannya menjadi A-B-C-D-D. Namun, jika mode peluncuran D adalah"singleTop"
, instance D yang ada menerima intent melaluionNewIntent()
, karena terdapat di bagian atas tumpukan—tumpukan tetap A-B-C-D. Namun, jika intent diterima aktivitas jenis B, instance B baru akan ditambahkan ke tumpukan, meskipun mode peluncurannya adalah"singleTop"
.Catatan: Jika instance baru dari aktivitas dibuat, pengguna dapat menekan tombol Kembali untuk kembali ke aktivitas sebelumnya. Tetapi, jika instance aktivitas yang ada menangani intent baru, pengguna tidak dapat menekan tombol Kembali untuk kembali ke status aktivitas sebelum intent baru diterima di
onNewIntent()
. "singleTask"
- Sistem membuat tugas baru dan membuat instance aktivitas di root tugas baru.
Namun, jika instance aktivitas sudah ada dalam tugas terpisah, sistem akan mengarahkan intent ke instance yang ada melalui panggilan ke metode
onNewIntent()
, bukan membuat instance baru. Hanya satu instance aktivitas yang boleh ada dalam satu waktu.Catatan: Meskipun aktivitas dimulai pada tugas baru, tombol Kembali tetap mengembalikan pengguna ke aktivitas sebelumnya.
"singleInstance"
.- Sama seperti
"singleTask"
, kecuali jika sistem tidak meluncurkan aktivitas lainnya ke tugas yang memiliki instance tersebut. Aktivitas harus menjadi satu-satunya anggota dari tugasnya; aktivitas apa pun yang dimulai dengan kode ini akan dibuka pada tugas terpisah.
Sebagai contoh lain, aplikasi Browser Android mendeklarasikan bahwa aktivitas browser web harus selalu terbuka pada tugasnya sendiri—dengan menentukan mode peluncuran singleTask
di elemen <activity>
.
Artinya, jika aplikasi memunculkan intent untuk membuka Browser Android, aktivitasnya tidak akan ditempatkan pada 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 dipindah ke depan untuk menangani intent baru.
Terlepas dari apakah aktivitas dimulai pada tugas baru atau pada tugas yang sama dengan aktivitas yang memulainya, tombol Kembali akan selalu mengarahkan pengguna ke aktivitas sebelumnya. Namun, jika Anda memulai aktivitas yang menentukan mode peluncuran singleTask
, maka jika instance aktivitas tersebut ada dalam tugas latar belakang, semua tugasnya akan dipindah ke latar depan. Pada tahap ini, back stack kini menyertakan semua aktivitas dari tugas yang dipindah ke depan, di bagian atas tumpukan. Gambar 4 menggambarkan jenis skenario ini.

Gambar 4. Representasi bagaimana aktivitas dengan mode peluncuran "singleTask" ditambahkan ke back stack. Jika aktivitas sudah menjadi bagian dari tugas latar belakang dengan back stack-nya sendiri, seluruh back stack juga akan dimajukan, di atas tugas saat ini.
Untuk informasi selengkapnya tentang menggunakan mode peluncuran dalam file manifes, lihat dokumentasi elemen <activity>
, di mana atribut launchMode
dan nilai yang diterima akan dibahas lebih lanjut.
Catatan: Perilaku yang Anda tentukan untuk aktivitas dengan atribut launchMode
dapat diganti dengan flag yang disertakan dengan intent yang memulai aktivitas Anda, seperti yang dibahas di bagian berikutnya.
Menggunakan flag Intent
Saat memulai suatu aktivitas, Anda dapat memodifikasi pengaitan default dari suatu aktivitas ke tugasnya dengan menyertakan flag dalam intent yang ingin Anda kirim ke startActivity()
. Flag yang dapat Anda gunakan untuk mengubah perilaku default adalah:
FLAG_ACTIVITY_NEW_TASK
- Memulai aktivitas dalam tugas baru. Jika tugas sudah berjalan untuk aktivitas yang Anda mulai saat ini, tugas tersebut akan dipindah ke latar depan dengan memulihkan status terakhirnya dan aktivitas tersebut menerima intent baru dalam
onNewIntent()
.Hal ini menghasilkan perilaku yang sama seperti nilai
"singleTask"
launchMode
, yang dibahas di bagian sebelumnya. FLAG_ACTIVITY_SINGLE_TOP
- Jika aktivitas yang dimulai adalah aktivitas saat ini (di bagian atas back stack), maka instance yang ada menerima panggilan ke
onNewIntent()
, bukan membuat instance baru dari aktivitas tersebut.Hal ini menghasilkan perilaku yang sama seperti nilai
"singleTop"
launchMode
, yang dibahas di bagian sebelumnya. FLAG_ACTIVITY_CLEAR_TOP
- Jika aktivitas yang sedang dimulai sudah berjalan di tugas saat ini, maka daripada meluncurkan instance baru dari aktivitas tersebut, semua aktivitas lain di atasnya akan diakhiri dan intent ini akan dikirimkan ke instance yang dilanjutkan dari aktivitas tersebut (saat ini di bagian atas), melalui
onNewIntent()
.Tidak ada nilai untuk atribut
launchMode
yang menghasilkan perilaku ini.FLAG_ACTIVITY_CLEAR_TOP
adalah yang paling sering digunakan bersama denganFLAG_ACTIVITY_NEW_TASK
. Saat digunakan bersama, flag ini berperan menemukan aktivitas yang ada pada tugas lain dan menempatkannya pada posisi yang dapat merespons intent tersebut.Catatan: Jika mode peluncuran aktivitas yang ditetapkan adalah
"standard"
, mode tersebut juga akan dihapus dari tumpukan dan instance baru akan diluncurkan sebagai ganti untuk menangani intent yang masuk. Itu karena instance baru selalu dibuat untuk intent baru jika mode peluncurannya adalah"standard"
.
Menangani afinitas
Afinitas menunjukkan tugas yang lebih dipilih sebagai lokasi suatu aktivitas. Secara default, semua aktivitas dari aplikasi yang sama memiliki afinitas satu sama lain. Jadi, secara default, semua aktivitas pada aplikasi yang sama berada pada tugas yang sama. Namun, Anda dapat mengubah afinitas default untuk suatu aktivitas. Aktivitas yang ditetapkan di aplikasi yang berbeda dapat memiliki afinitas yang sama, atau afinitas tugas yang berbeda dapat ditetapkan ke aktivitas yang ditentukan dalam aplikasi yang sama.
Anda dapat mengubah afinitas untuk aktivitas tertentu dengan atribut taskAffinity
dari elemen <activity>
.
Atribut taskAffinity
menggunakan nilai string, yang harus unik dari nama paket default yang dideklarasikan di elemen <manifest>
, karena sistem menggunakan nama tersebut untuk mengidentifikasi afinitas tugas default bagi aplikasi.
Afinitas berperan dalam dua situasi:
- Saat intent yang meluncurkan aktivitas berisi flag
FLAG_ACTIVITY_NEW_TASK
.Aktivitas baru, secara default, diluncurkan ke dalam tugas aktivitas yang disebut
startActivity()
. Aktivitas ini didorong ke back stack yang sama sebagai pemanggil. Namun, jika intent yang diteruskan kestartActivity()
berisi flagFLAG_ACTIVITY_NEW_TASK
, sistem akan mencari tugas yang berbeda untuk menampung aktivitas baru. Biasanya, berupa tugas baru. Namun, tidak harus selalu demikian. Jika sudah terdapat tugas dengan afinitas yang sama seperti aktivitas baru, aktivitas akan diluncurkan ke tugas tersebut. Jika tidak, tugas baru akan dimulai.Jika flag ini menyebabkan aktivitas memulai tugas baru dan pengguna menekan tombol Layar Utama untuk keluar, harus ada cara bagi pengguna untuk menavigasi kembali ke tugas. Beberapa entity (seperti pengelola notifikasi) selalu memulai aktivitas pada tugas eksternal, bukan sebagai bagian dari tugas internalnya, sehingga
FLAG_ACTIVITY_NEW_TASK
selalu ditempatkan ke intent yang diteruskan kestartActivity()
. Jika Anda memiliki aktivitas yang dapat dipanggil oleh entity eksternal yang mungkin menggunakan flag ini, perhatikan apakah pengguna memiliki caranya sendiri untuk kembali ke tugas yang dimulai, misalnya melalui ikon peluncur (aktivitas root dari tugas tersebut memiliki filter intentCATEGORY_LAUNCHER
; lihat bagian Memulai tugas di bawah). - Jika aktivitas memiliki atribut
allowTaskReparenting
-nya sendiri yang ditetapkan ke"true"
.Dalam hal ini, aktivitas dapat dipindah dari tugas yang dimulai ke tugas yang memiliki afinitas, saat tugas tersebut berada di latar depan.
Misalnya, anggaplah aktivitas yang melaporkan kondisi cuaca di kota tertentu ditetapkan sebagai bagian dari aplikasi perjalanan. Aktivitas tersebut memiliki afinitas yang sama dengan aktivitas lain di aplikasi yang sama (afinitas aplikasi default) dan memungkinkan pengindukan ulang dengan atribut ini. Jika salah satu aktivitas Anda memulai aktivitas pelaporan cuaca, aktivitas ini awalnya berasal dari tugas yang sama dengan aktivitas Anda. Namun, saat tugas aplikasi perjalanan berada di latar depan, aktivitas pelaporan cuaca ditetapkan kembali ke tugas tersebut dan ditampilkan di dalamnya.
Tips: Jika file APK berisi lebih dari satu "aplikasi" dari sudut pandang pengguna, Anda mungkin perlu menggunakan atribut taskAffinity
untuk menetapkan afinitas yang berbeda ke aktivitas yang terkait dengan setiap "aplikasi".
Menghapus back stack
Jika pengguna meninggalkan tugas dalam waktu yang lama, sistem akan menghapus tugas dari semua aktivitas kecuali aktivitas root. Saat pengguna kembali ke tugas lagi, hanya aktivitas root yang dipulihkan. Sistem berperilaku seperti ini karena, setelah jangka waktu yang lama, pengguna mungkin telah meninggalkan hal yang mereka lakukan sebelumnya dan kembali ke tugas untuk memulai hal yang baru.
Ada beberapa atribut aktivitas yang dapat Anda gunakan untuk mengubah perilaku ini:
alwaysRetainTaskState
- Jika atribut ini ditetapkan ke
"true"
dalam aktivitas root tugas, perilaku default yang baru saja dijelaskan tidak akan terjadi. Tugas akan menyimpan semua aktivitas dalam tumpukannya bahkan setelah jangka waktu yang lama. clearTaskOnLaunch
- Jika atribut ini ditetapkan ke
"true"
dalam aktivitas root tugas, tumpukan akan dihapus hingga aktivitas root-nya 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 sesaat. finishOnTaskLaunch
- Atribut ini seperti
clearTaskOnLaunch
, tetapi beroperasi pada aktivitas tunggal, bukan seluruh tugas. Atribut ini juga dapat menyebabkan aktivitas apa pun dihapus, termasuk aktivitas root. Saat atribut tersebut ditetapkan ke"true"
, aktivitas tetap menjadi bagian dari tugas hanya untuk sesi saat ini. Jika pengguna keluar lalu kembali ke tugas, aktivitas tersebut sudah tidak lagi ada.
Memulai tugas
Anda dapat menyiapkan aktivitas sebagai titik awal untuk tugas dengan memberikan filter intent dengan "android.intent.action.MAIN"
sebagai tindakan yang ditentukan dan "android.intent.category.LAUNCHER"
sebagai kategori yang ditentukan. Contoh:
<activity ... > <intent-filter ... > <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> ... </activity>
Filter intent seperti ini menyebabkan ikon dan label aktivitas ditampilkan di peluncur aplikasi, sehingga pengguna dapat meluncurkan aktivitas dan kembali ke tugas yang dibuatnya kapan saja setelah diluncurkan.
Kemampuan kedua ini sangatlah penting: Pengguna harus dapat meninggalkan tugas lalu kembali lagi menggunakan peluncur aktivitas ini. Karena alasan ini, dua mode peluncuran yang menandai aktivitas sebagai selalu memulai tugas, "singleTask"
dan "singleInstance"
, hanya boleh digunakan saat aktivitas memiliki filter ACTION_MAIN
dan CATEGORY_LAUNCHER
. Bayangkan, misalnya, hal yang dapat terjadi jika filter tidak ada: Intent meluncurkan aktivitas "singleTask"
, memulai tugas baru, dan pengguna menghabiskan waktu untuk mengerjakan tugas tersebut. Kemudian pengguna menekan tombol Layar Utama. Sekarang tugas dikirim ke latar belakang dan tidak terlihat. Lalu pengguna tidak memiliki cara untuk kembali ke tugas, karena tugas tersebut tidak ditampilkan dalam peluncur aplikasi.
Untuk kasus di mana Anda tidak menginginkan pengguna untuk dapat kembali ke aktivitas, tetapkan finishOnTaskLaunch
elemen <activity>
ke "true"
(lihat Menghapus back stack).
Informasi selengkapnya tentang bagaimana tugas dan aktivitas ditampilkan dan dikelola di layar Ringkasan tersedia di Layar Terbaru.