Tugas dan data sebelumnya

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.

Gambar 1. Representasi tentang bagaimana setiap aktivitas baru dalam tugas menambahkan item ke back stack. Saat pengguna mengetuk atau memberikan gestur Kembali, aktivitas saat ini akan dihancurkan dan aktivitas sebelumnya akan dilanjutkan.

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 ke super.onBackPressed(), bukan menyelesaikan. Memanggil super.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

Gambar 2. Dua tugas: Tugas B menerima interaksi pengguna di latar depan, sedangkan Tugas A di latar belakang, menunggu untuk dilanjutkan.

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:

  1. 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.

  2. 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

Gambar 3. Satu aktivitas dapat dibuat instance-nya beberapa kali.

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:

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:

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:

  1. "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.
  2. "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 melalui onNewIntent(), 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".

  3. "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.
  4. "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.
  5. "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 tanda FLAG_ACTIVITY_MULTIPLE_TASK atau FLAG_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.

Gambar 4. Representasi tentang cara aktivitas dengan mode peluncuran "singleTask" ditambahkan ke data sebelumnya. Jika aktivitas sudah menjadi bagian dari tugas latar belakang dengan data sebelumnya sendiri, seluruh data sebelumnya tersebut juga akan dimajukan, di atas tugas saat 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 dengan FLAG_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:

  1. 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 flag FLAG_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 ke startActivity().

    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.

  2. 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 dari alwaysRetainTaskState. 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.

Referensi lainnya