Tugas dan data sebelumnya

Tugas adalah kumpulan aktivitas yang berinteraksi dengan pengguna saat mencoba melakukan sesuatu di aplikasi Anda. Aktivitas ini disusun 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 pesan, aktivitas baru akan terbuka untuk melihat pesan tersebut. Aktivitas baru ini ditambahkan ke data sebelumnya. Kemudian, saat pengguna mengetuk atau 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 aplikasi tersebut akan terbuka sebagai aktivitas root dalam tumpukan.

Saat aktivitas saat ini memulai aktivitas lain, aktivitas baru 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 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 gestur atau tombol 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.

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

Saat pengguna terus mengetuk atau memberikan gestur Kembali, setiap aktivitas dalam tumpukan akan dikeluarkan untuk menampilkan aktivitas sebelumnya, hingga pengguna kembali ke layar Beranda atau ke aktivitas mana pun yang sedang berjalan saat tugas dimulai. Saat semua aktivitas dihapus dari tumpukan, tugas 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 masuk 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 keluar dari aplikasi menggunakan gestur atau tombol Layar Utama.

Pada umumnya, perilaku ini berarti pengguna dapat melanjutkan aplikasi 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 onBackPressed(). AndroidX Activity API secara otomatis tunduk pada 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, update implementasi Anda untuk 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 untuk 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 berada 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 berada 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.

Pertimbangkan alur tugas berikut untuk Tugas A saat ini yang memiliki tiga aktivitas dalam tumpukannya, termasuk dua aktivitas di bawah 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 dipindahkan 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 berubah, 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 disusun ulang, jika aplikasi Anda mengizinkan 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 tersebut ke atas. Dengan demikian, satu aktivitas di aplikasi Anda mungkin dibuat instance-nya beberapa kali, bahkan dari tugas yang berbeda, seperti yang ditunjukkan pada gambar 3.

Jika pengguna menavigasi mundur menggunakan tombol atau gestur Kembali, instance aktivitas akan ditampilkan sesuai urutan pembukaannya, 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 mengelola tugas.

Lingkungan multi-aplikasi

Jika aplikasi berjalan bersamaan di 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. 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 dihentikan, tetapi sistem akan 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 dipindahkan ke latar belakang. Sistem mempertahankan status setiap aktivitas dalam tugas. Jika nantinya 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 gestur Kembali, aktivitas saat ini akan muncul dari tumpukan dan dihancurkan. Aktivitas sebelumnya dalam tumpukan dilanjutkan. Jika aktivitas diakhiri, 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 berturut-turut dalam tugas yang sama, dalam stack terakhir masuk, pertama keluar. Ini sangat cocok untuk sebagian besar aplikasi, dan Anda biasanya tidak perlu khawatir tentang bagaimana aktivitas Anda dikaitkan dengan tugas atau bagaimana aktivitas tersebut berada di data sebelumnya.

Namun, Anda mungkin memutuskan ingin menyela perilaku normal. Misalnya, Anda mungkin ingin aktivitas dalam aplikasi memulai tugas baru saat dimulai, bukan ditempatkan dalam tugas saat ini. Atau, saat memulai aktivitas, Anda mungkin ingin meneruskan instance yang sudah ada, bukan membuat instance baru di atas data sebelumnya. Atau, Anda mungkin ingin data sebelumnya dihapus dari semua aktivitas kecuali aktivitas root saat pengguna meninggalkan tugas.

Anda dapat melakukan hal ini dan lainnya menggunakan atribut dalam elemen manifes dan flag <activity> dalam intent yang Anda teruskan ke startActivity().

Berikut adalah atribut <activity> utama yang dapat Anda gunakan untuk mengelola tugas:

Dan ini adalah flag intent utama yang dapat Anda gunakan:

Bagian berikut membahas cara menggunakan atribut manifes dan tanda intent ini untuk menentukan cara mengaitkan aktivitas dengan tugas dan perilakunya di data sebelumnya.

Juga dibahas pertimbangan cara tugas dan aktivitas ditampilkan dan dikelola di layar Terbaru. Biasanya, biarkan sistem menentukan cara tugas dan aktivitas ditampilkan di layar Terbaru, dan Anda tidak perlu memodifikasi 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 ini:

Jadi, jika Aktivitas A memulai Aktivitas B, Aktivitas B dapat menentukan dalam manifesnya cara mengaitkannya dengan tugas saat ini, 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 ditentukan dalam manifesnya.

Menentukan mode peluncuran menggunakan file manifes

Saat mendeklarasikan aktivitas dalam file manifes, Anda dapat menentukan cara aktivitas dikaitkan 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 tempat dimulainya dan mengarahkan intent ke instance tersebut. Aktivitas ini dapat dibuat instance-nya beberapa kali, setiap instance dapat menjadi milik beberapa tugas, 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 berbagai tugas, dan satu tugas dapat memiliki beberapa instance (tetapi hanya jika aktivitas di bagian atas data sebelumnya bukan instance yang ada dari aktivitas tersebut).

    Misalnya, anggaplah data sebelumnya tugas terdiri dari aktivitas root A dengan aktivitas B, C, dan D di atasnya (sehingga tumpukannya 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 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 tumpukan tetap A-B-C-D. Di sisi lain, jika intent diterima untuk aktivitas jenis B, instance B baru akan ditambahkan ke tumpukan 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 mengarahkan intent ke instance yang ada melalui panggilan ke metode onNewIntent(), bukan membuat instance baru. Sementara itu semua aktivitas lain di atasnya dihancurkan.
  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 dari 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 lainnya, 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 akan 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 pada 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 depan di bagian atas tumpukan. 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 back stack-nya sendiri, seluruh data sebelumnya juga akan dimajukan, di atas tugas saat ini.

Untuk mengetahui informasi selengkapnya tentang 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 kirim 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 sedang dimulai, tugas tersebut akan dibawa ke latar depan dengan status terakhir dipulihkan, dan aktivitas akan menerima intent baru di 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 data sebelumnya, instance yang ada akan menerima panggilan ke onNewIntent(), bukan membuat instance baru aktivitas.

Hal ini menghasilkan perilaku yang sama seperti 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 dari aktivitas tersebut. Intent dikirimkan ke instance aktivitas yang dilanjutkan, yang sekarang berada di atas, melalui onNewIntent().

Tidak ada nilai untuk atribut launchMode yang menghasilkan perilaku ini.

FLAG_ACTIVITY_CLEAR_TOP paling sering digunakan bersama 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" dari suatu aktivitas. Secara default, semua aktivitas dari aplikasi yang sama memiliki afinitas satu sama lain: aktivitas tersebut "lebih suka" berada dalam tugas yang sama.

Namun, Anda dapat memodifikasi 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 menggunakan 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 dalam tugas aktivitas yang disebut startActivity(). Didorong ke data sebelumnya yang sama dengan pemanggil.

    Namun, jika intent yang diteruskan ke startActivity() berisi tanda 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 diluncurkan ke tugas tersebut. Jika tidak, tugas baru akan dimulai.

    Jika tanda ini menyebabkan aktivitas memulai tugas baru dan pengguna menggunakan tombol Layar Utama atau gestur untuk keluar darinya, 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 menempatkan FLAG_ACTIVITY_NEW_TASK di intent yang diteruskan ke startActivity().

    Jika entitas eksternal yang mungkin menggunakan tanda 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. Saat aktivitas memiliki atribut allowTaskReparenting yang ditetapkan ke "true".

    Dalam hal ini, aktivitas dapat berpindah dari tugas yang dimulainya ke tugas yang memiliki afinitas saat tugas tersebut di latar depan.

    Misalnya, anggaplah aktivitas yang melaporkan kondisi cuaca di kota-kota tertentu ditentukan 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 Anda memulai aktivitas pelapor cuaca, aktivitas tersebut awalnya termasuk tugas yang sama dengan aktivitas Anda. Namun, saat tugas aplikasi perjalanan muncul di latar depan, aktivitas laporan cuaca akan 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. Ketika pengguna kembali ke tugas, hanya aktivitas root yang dipulihkan. Sistem berperilaku seperti ini berdasarkan asumsi bahwa setelah waktu yang lama, pengguna telah 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 tersebut mempertahankan semua aktivitas dalam tumpukannya bahkan setelah jangka waktu yang lama.
clearTaskOnLaunch

Jika atribut ini ditetapkan ke "true" dalam aktivitas root tugas, tugas akan dihapus hingga ke aktivitas root setiap kali pengguna meninggalkan tugas dan kembali ke tugas. Dengan kata lain, hal ini adalah kebalikan dari alwaysRetainTaskState. Pengguna selalu kembali ke tugas dalam status awal, bahkan setelah meninggalkan tugas hanya sebentar.

finishOnTaskLaunch

Atribut ini seperti clearTaskOnLaunch, tetapi beroperasi pada satu aktivitas, bukan seluruh tugas. Tindakan ini juga dapat menyebabkan aktivitas apa pun selesai kecuali untuk 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 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 aktivitas ditampilkan di peluncur aplikasi, sehingga pengguna dapat meluncurkan aktivitas dan kembali ke tugas yang dibuatnya kapan pun setelah diluncurkan.

Kemampuan kedua ini penting. Pengguna harus dapat meninggalkan 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 tugas tersebut tidak direpresentasikan dalam peluncur aplikasi.

Untuk kasus saat Anda tidak ingin pengguna dapat kembali ke suatu aktivitas, tetapkan finishOnTaskLaunch elemen <activity> ke "true". Untuk mengetahui informasi selengkapnya, lihat bagian tentang menghapus data sebelumnya.

Informasi selengkapnya tentang cara tugas dan aktivitas ditampilkan dan dikelola di layar Terbaru tersedia di layar Terbaru.

Referensi lainnya