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

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

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

Gambar 2. Dua tugas: Tugas B menerima interaksi pengguna di latar depan, sementara Tugas A berada di latar belakang, menunggu lanjutkan.

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:

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

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

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 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:

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:

  • Menggunakan file manifes

    Saat mendeklarasikan aktivitas dalam file manifes, Anda bisa menentukan cara yang terkait dengan tugas saat dimulai.

  • Menggunakan flag intent

    Saat Anda menelepon startActivity(), Anda dapat menyertakan penanda di Intent 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:

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

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

Gambar 4. Representasi tentang cara aktivitas dengan peluncuran mode "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" Nilai launchMode 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" Nilai launchMode 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 dengan FLAG_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:

  1. 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() berisi FLAG_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 diteruskan startActivity().

    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.

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

Referensi lainnya