From bfbd27b84fb310ed007705f18cf13aeeda098096 Mon Sep 17 00:00:00 2001 From: David Friedman Date: Fri, 24 Jul 2015 19:52:06 -0700 Subject: Localization for Android fundamentals Bug: 20503562 Change-Id: Ia98618932aef2b92a48e4d6e69749c220161722f --- .../in/guide/components/tasks-and-back-stack.jd | 578 +++++++++++++++++++++ 1 file changed, 578 insertions(+) create mode 100644 docs/html-intl/intl/in/guide/components/tasks-and-back-stack.jd (limited to 'docs/html-intl/intl/in/guide/components/tasks-and-back-stack.jd') diff --git a/docs/html-intl/intl/in/guide/components/tasks-and-back-stack.jd b/docs/html-intl/intl/in/guide/components/tasks-and-back-stack.jd new file mode 100644 index 000000000000..279442f2ab38 --- /dev/null +++ b/docs/html-intl/intl/in/guide/components/tasks-and-back-stack.jd @@ -0,0 +1,578 @@ +page.title=Tugas dan Back-Stack +parent.title=Aktivitas +parent.link=activities.html +@jd:body + +
+ +
+ + +

Sebuah aplikasi biasanya berisi beberapa aktivitas. Setiap aktivitas +harus didesain dengan jenis tindakan tertentu yang bisa dilakukan pengguna dan bisa memulai aktivitas +lain. Misalnya, aplikasi email mungkin memiliki satu aktivitas untuk menampilkan daftar pesan baru. +Bila pengguna memilih sebuah pesan, aktivitas baru akan terbuka untuk melihat pesan tersebut.

+ +

Aktivitas bahkan bisa memulai aktivitas yang ada dalam aplikasi lain di perangkat. Misalnya +, jika aplikasi Anda ingin mengirim pesan email, Anda bisa mendefinisikan intent untuk melakukan tindakan +"kirim" dan menyertakan sejumlah data, seperti alamat email dan pesan. Aktivitas dari aplikasi +lain yang mendeklarasikan dirinya untuk menangani jenis intent ini akan terbuka. Dalam hal ini, intent +tersebut untuk mengirim email, sehingga aktivitas "menulis" pada aplikasi email akan dimulai (jika beberapa aktivitas +mendukung intent yang sama, maka sistem akan memungkinkan pengguna memilih mana yang akan digunakan). Bila email telah +dikirim, aktivitas Anda akan dilanjutkan dan seolah-olah aktivitas email adalah bagian dari aplikasi Anda. Meskipun +aktivitas mungkin dari aplikasi yang berbeda, Android akan tetap mempertahankan pengalaman pengguna yang mulus +dengan menjalankan kedua aktivitas dalam tugas yang sama.

+ +

Tugas adalah kumpulan aktivitas yang berinteraksi dengan pengguna +saat melakukan pekerjaan tertentu. Aktivitas tersebut diatur dalam tumpukan (back-stack), dalam +urutan membuka setiap aktivitas.

+ + + +

Layar Home perangkat adalah tempat memulai hampir semua tugas. Bila pengguna menyentuh ikon di launcher +aplikasi +(atau pintasan pada layar Home), tugas aplikasi tersebut akan muncul pada latar depan. Jika tidak ada +tugas untuk aplikasi (aplikasi tidak digunakan baru-baru ini), maka tugas baru +akan dibuat dan aktivitas "utama" untuk aplikasi tersebut akan terbuka sebagai aktivitas akar dalam back-stack.

+ +

Bila aktivitas saat ini dimulai lagi, aktivitas baru akan didorong ke atas back-stack dan +mengambil fokus. Aktivitas sebelumnya tetap dalam back-stack, namun dihentikan. Bila aktivitas +dihentikan, sistem akan mempertahankan status antarmuka penggunanya saat ini. Bila pengguna menekan tombol +Back +, aktivitas saat ini akan dikeluarkan dari atas back-stack (aktivitas dimusnahkan) dan + aktivitas sebelumnya dilanjutkan (status UI sebelumnya dipulihkan). Aktivitas dalam back-stack +tidak pernah disusun ulang, hanya didorong dan dikeluarkan dari back-stack—yang didorong ke back-stack saat dimulai oleh +aktivitas saat ini dan dikeluarkan bila pengguna meninggalkannya menggunakan tombol Back. Dengan demikian, +back-stack +beroperasi sebagai struktur objek "masuk terakhir, keluar pertama". Gambar 1 melukiskan perilaku +ini dengan jangka waktu yang menunjukkan kemajuan antar aktivitas beserta +back-stack pada setiap waktu.

+ + +

Gambar 1. Representasi tentang cara setiap aktivitas baru dalam +tugas menambahkan item ke back-stack. Bila pengguna menekan tombol Back, aktivitas +saat ini +akan dimusnahkan dan aktivitas sebelumnya dilanjutkan.

+ + +

Jika pengguna terus menekan Back, maka setiap aktivitas dalam back-stack akan dikeluarkan untuk +menampilkan +yang sebelumnya, sampai pengguna kembali ke layar Home (atau aktivitas mana pun yang sedang dijalankan saat tugas +dimulai. Bila semua aktivitas telah dihapus dari back-stack, maka tugas tidak akan ada lagi.

+ +
+

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

+
+
+

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

+
+ +

Tugas adalah unit kohesif yang bisa dipindahkan ke "latar belakang" bila pengguna memulai tugas baru atau masuk ke +layar Home, melalui tombolHome. Sementara di latar belakang, semua aktivitas dalam +tugas +dihentikan, namun back-stack untuk tugas tidak berubah—tugas kehilangan fokus saat +tugas lain berlangsung, seperti yang ditampilkan dalam gambar 2. Kemudian, tugas bisa kembali ke "latar depan" agar pengguna +bisa melanjutkan tugas di tempat menghentikannya. Anggaplah, misalnya, tugas saat ini (Tugas A) memiliki tiga +aktivitas dalam back-stack—dua pada aktivitas saat ini. Pengguna menekan tombol Home +, kemudian +memulai aplikasi baru dari launcher aplikasi. Bila muncul layar Home, Tugas A akan beralih +ke latar belakang. Bila aplikasi baru dimulai, sistem akan memulai tugas untuk aplikasi tersebut +(Tugas B) dengan back-stack aktivitas sendiri. Setelah berinteraksi dengan aplikasi +tersebut, pengguna akan kembali ke Home lagi dan memilih aplikasi yang semula +memulai Tugas A. Sekarang, Tugas A muncul di +latar depan—ketiga aktivitas dalam back-stack tidak berubah dan aktivitas di atas +back-stack akan dilanjutkan. Pada +titik ini pengguna juga bisa beralih kembali ke Tugas B dengan masuk ke Home dan memilih ikon aplikasi +yang memulai tugas tersebut (atau dengan memilih tugas aplikasi dari +layar ikhtisar). +Ini adalah contoh dari melakukan multitasking di Android.

+ +

Catatan: Beberapa tugas bisa berlangsung di latar belakang secara bersamaan. +Akan tetapi, jika pengguna menjalankan banyak tugas di latar belakang sekaligus, sistem mungkin mulai +menghapus aktivitas latar belakang untuk memulihkan memori, yang akan menyebabkan status aktivitas hilang. +Lihat bagian berikut tentang Status aktivitas.

+ +

Karena aktivitas di back-stack tidak pernah diatur ulang, jika aplikasi Anda memungkinkan +pengguna untuk memulai aktivitas tertentu dari lebih dari satu aktivitas, instance baru +aktivitas tersebut akan dibuat dan didorong ke back-stack (bukannya memunculkan instance sebelumnya dari +aktivitas ke atas). Dengan demikian, satu aktivitas pada aplikasi Anda mungkin dibuat beberapa +kali (bahkan dari beberapa tugas), seperti yang ditampilkan dalam gambar 3. Dengan demikian, jika pengguna mengarahkan mundur +menggunakan tombol Back, setiap instance aktivitas ini akan ditampilkan dalam urutan saat +dibuka (masing-masing +dengan status UI sendiri). Akan tetapi, Anda bisa memodifikasi perilaku ini jika tidak ingin aktivitas +dibuat instance-nya lebih dari sekali. Caranya dibahas di bagian selanjutnya tentang Mengelola Tugas.

+ + +

Untuk meringkas perilaku default aktivitas dan tugas:

+ + + + +
+

Desain Navigasi

+

Untuk mengetahui selengkapnya tentang cara kerja navigasi aplikasi di Android, baca panduan Navigasi Desain Android.

+
+ + +

Menyimpan Status Aktivitas

+ +

Seperti dibahas di atas, perilaku default sistem akan mempertahankan status aktivitas bila +dihentikan. Dengan cara ini, bila pengguna mengarah kembali ke aktivitas sebelumnya, antarmuka pengguna akan muncul +seperti saat ditinggalkan. Akan tetapi, Anda bisa—dan harus—secara proaktif mempertahankan +status aktivitas menggunakan metode callback, jika aktivitas ini dimusnahkan dan harus +dibuat kembali.

+ +

Bila sistem menghentikan salah satu aktivitas (seperti saat aktivitas baru dimulai atau tugas +dipindah ke latar belakang), sistem mungkin memusnahkan aktivitas sepenuhnya jika perlu memulihkan +memori sistem. Bila hal ini terjadi, informasi tentang status aktivitas akan hilang. Jika hal ini terjadi, sistem +masih +mengetahui bahwa aktivitas memiliki tempat di back-stack, namun saat aktivitas tersebut dibawa ke bagian teratas +back-stack, sistem harus membuatnya kembali (bukan melanjutkannya). Untuk +menghindari hilangnya pekerjaan pengguna, Anda harus secara proaktif mempertahankannya dengan menerapkan metode callback +{@link android.app.Activity#onSaveInstanceState onSaveInstanceState()} +dalam aktivitas.

+ +

Untuk informasi selengkapnya tentang cara menyimpan status aktivitas Anda, lihat dokumen +Aktivitas.

+ + + +

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 back-stack "masuk terakhir, keluar pertama"—berfungsi +dengan baik untuk kebanyakan aplikasi dan Anda tidak perlu khawatir tentang cara mengaitkan aktivitas +dengan tugas atau cara penempatannya di back-stack. Akan tetapi, Anda bisa memutuskan apakah ingin menyela +perilaku normal. Mungkin Anda ingin agar suatu aktivitas dalam aplikasi untuk memulai tugas baru bila telah +dimulai (sebagai ganti menempatkannya dalam tugas saat ini); atau, bila memulai aktivitas, Anda ingin +memajukan instance yang ada (sebagai ganti membuat instance +baru pada bagian teratas back-stack); atau, Anda ingin back-stack dihapus dari semua +aktivitas selain untuk aktivitas akar bila pengguna meninggalkan tugas.

+ +

Anda bisa melakukan semua ini dan lainnya, dengan atribut dalam elemen manifes +{@code <activity>} +dan dengan flag pada intent yang Anda teruskan ke +{@link android.app.Activity#startActivity startActivity()}.

+ +

Dalam hal ini, atribut +{@code <activity>} utama yang bisa Anda gunakan adalah:

+ + + +

Dan flag intent utama yang bisa Anda gunakan adalah:

+ + + +

Dalam bagian berikut, Anda akan melihat cara menggunakan beberapa atribut manifes ini dan flag +intent untuk mendefinisikan cara mengaitkan aktivitas dengan tugas dan cara perilakunya di back-stack.

+ +

Juga, pertimbangan cara menyatakan dan mengelola tugas dan aktivitas +dibahas secara terpisah di layar ikhtisar. Lihat Layar Ikhtisar +untuk informasi selengkapnya. Biasanya Anda harus mengizinkan sistem mendefinisikan cara menyatakan tugas dan +aktivitas di layar ikhtisar, dan Anda tidak perlu memodifikasi perilaku ini.

+ +

Perhatian: Kebanyakan aplikasi tidak harus menyela perilaku +default untuk aktivitas dan tugas. Jika merasa bahwa aktivitas Anda perlu memodifikasi +perilaku default, lakukan dengan hati-hati dan pastikan menguji kegunaan aktivitas selama +dijalankan dan saat mengarahkan kembali ke sana dari aktivitas dan tugas lain dengan tombol Back. +Pastikan menguji perilaku navigasi yang mungkin bertentangan dengan perilaku yang diharapkan pengguna.

+ + +

Mendefinisikan mode peluncuran

+ +

Mode peluncuran memungkinkan Anda mendefinisikan cara mengaitkan instance baru dari suatu aktivitas dengan +tugas saat ini. Anda bisa mendefinisikan beragam mode peluncuran dalam dua cara:

+ + +

Dengan demikian, jika Aktivitas A memulai Aktivitas B, Aktivitas B bisa mendefinisikan dalam manifesnya cara +mengaitkan dengan tugas saat ini (jika sama sekali) dan Aktivitas A juga bisa meminta cara mengaitkan Aktivitas B +dengan tugas saat ini. Jika kedua aktivitas mendefinisikan cara mengaitkan Aktivitas B +dengan tugas, maka permintaan Aktivitas A (sebagaimana didefinisikan dalam intent) lebih dihargai daripada +permintaan Aktivitas B (sebagaimana didefinisikan dalam manifesnya).

+ +

Catatan: Beberapa mode peluncuran yang tersedia untuk file manifes +tidak tersedia sebagai flag untuk intent dan, juga, beberapa mode peluncuran yang tersedia sebagai flag +untuk intent tidak bisa didefinisikan dalam manifest.

+ + +

Menggunakan file manifes

+ +

Saat mendeklarasikan aktivitas dalam file manifes, Anda bisa menetapkan cara mengaitkan aktivitas +dengan tugas menggunakan {@code <activity>} +melalui atribut {@code +launchMode} elemen.

+ +

Atribut {@code +launchMode} menetapkan instruksi tentang cara meluncurkan aktivitas +ke dalam tugas. Ada empat macam mode peluncuran yang bisa Anda tetapkan ke atribut +launchMode +:

+ +
+
{@code "standard"} (mode default)
+
Default. Sistem membuat instance baru aktivitas dalam tugas yang +akan menjadi tempat memulainya dan mengarahkan intent ke sana. Aktivitas ini bisa dibuat instance-nya beberapa kali, +masing-masing instance bisa dimiliki oleh tugas berbeda, dan satu tugas bisa memiliki beberapa instance.
+
{@code "singleTop"}
+
Jika instance aktivitas sudah ada di bagian teratas tugas saat ini, sistem +akan mengarahkan intent ke instance tersebut melalui panggilan ke metode {@link +android.app.Activity#onNewIntent onNewIntent()}, bukan membuat instance baru dari +aktivitas tersebut. Aktivitas bisa dibuat instance-nya beberapa kali, masing-masing instance bisa dimiliki +oleh tugas berbeda, dan satu tugas bisa memiliki beberapa instance (namun hanya jika +aktivitas di bagian teratas back-stack bukan instance yang ada dari aktivitas tersebut). +

Misalnya, anggaplah back-stack tugas terdiri dari aktivitas A akar dengan aktivitas B, C, +dan D di bagian teratas (back-stack adalah A-B-C-D; D yang teratas). Intent masuk untuk aktivitas tipe D. +Jika D memiliki mode peluncuran {@code "standard"} default, instance baru dari kelas ini akan diluncurkan dan +back-stack menjadi A-B-C-D-D. Namun, jika mode peluncuran D adalah {@code "singleTop"}, instance +yang ada dari D akan menerima intent melalui {@link +android.app.Activity#onNewIntent onNewIntent()}, karena ada di bagian teratas back-stack— +back-stack tetap A-B-C-D. Akan tetapi, jika intent masuk untuk aktivitas tipe B, maka +instance B baru akan ditambahkan ke back-stack, sekalipun mode peluncuran adalah{@code "singleTop"}.

+

Catatan: Bila instance dari aktivitas baru telah dibuat, +pengguna bisa menekan tombol Back untuk kembali ke aktivitas sebelumnya. Namun bila instance +yang ada dari +aktivitas menangani intent baru, pengguna tidak bisa menekan tombol Back untuk kembali ke +status +aktivitas sebelum intent baru masuk di {@link android.app.Activity#onNewIntent +onNewIntent()}.

+
+ +
{@code "singleTask"}
+
Sistem membuat tugas baru dan membuat instance aktivitas di akar tugas baru. +Akan tetapi, jika instance aktivitas sudah ada dalam tugas terpisah, sistem akan mengarahkan +intent ke instance yang ada melalui panggilan ke metode {@link +android.app.Activity#onNewIntent onNewIntent()}, bukan membuat instance baru. Hanya +boleh ada satu instance aktivitas untuk setiap kalinya. +

Catatan: Meskipun aktivitas dimulai di tugas baru, tombol +Back tetap akan mengembalikan pengguna ke aktivitas sebelumnya.

+
{@code "singleInstance"}.
+
Sama seperti {@code "singleTask"}, namun sistem tidak meluncurkan aktivitas lain ke +tugas yang menyimpan instance. Aktivitas selalu satu dan satu-satunya anggota dari tugasnya; +aktivitas apa pun yang dimulai dengan ini akan dibuka di tugas yang terpisah.
+
+ + +

Sebagai contoh lainnya, aplikasi Browser Android mendeklarasikan bahwa aktivitas browser web harus +selalu dibuka dalam tugasnya sendiri—dengan menetapkan mode pembuka {@code singleTask} dalam elemen{@code <activity>}. +Ini berarti bahwa jika aplikasi Anda mengeluarkan +intent untuk membuka Browser Android, aktivitasnya tidak akan ditempatkan dalam tugas +yang sama seperti 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.

+ +

Baik aktivitas dimulai dalam tugas baru atau maupun dalam tugas yang sama seperti aktivitas yang memulainya, tombol +Back selalu membawa pengguna ke aktivitas sebelumnya. Akan tetapi, jika +Anda memulai aktivitas yang menetapkan mode pembuka {@code singleTask}, maka jika instance +aktivitas tersebut ada dalam tugas latar belakang, seluruh tugas tersebut akan dibawa ke latar depan. Pada titik +ini, back-stack sekarang menyertakan semua aktivitas dari tugas yang dimajukan, di atas +back-stack. Gambar 4 mengilustrasikan tipe skenario ini.

+ + +

Gambar 4. Representasi tentang cara aktivitas dengan +mode pembuka "singleTask" ditambahkan ke back-stack. Jika aktivitas tersebut sudah menjadi bagian dari +tugas latar belakang dengan back-stack sendiri, maka seluruh back-stack juga +dimajukan, di atas tugas saat ini.

+ +

Untuk informasi selengkapnya tentang menggunakan mode pembuka dalam file manifes, lihat dokumentasi elemen +<activity> +, di mana atribut {@code launchMode} dan nilai-nilai yang diterima +akan dibahas selengkapnya.

+ +

Catatan: Perilaku yang Anda tentukan untuk aktivitas dengan atribut {@code launchMode} +bisa dikesampingkan dengan flag yang disertakan bersama intent yang memulai aktivitas Anda, seperti dibahas dalam +bagian berikutnya.

+ + + +

Menggunakan flag Intent

+ +

Saat memulai aktivitas, Anda bisa memodifikasi asosiasi default aktivitas pada tugasnya + dengan menyertakan flag dalam intent yang Anda kirimkan ke {@link +android.app.Activity#startActivity startActivity()}. Flag yang bisa Anda gunakan untuk memodifikasi perilaku default +adalah:

+ +

+

{@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK}
+
Memulai aktivitas dalam tugas baru. Jika tugas sudah dijalankan untuk aktivitas yang sekarang +Anda mulai, tugas tersebut akan dibawa ke latar depan dengan status terakhir yang dipulihkan dan aktivitas +akan menerima intent baru dalam {@link android.app.Activity#onNewIntent onNewIntent()}. +

Ini menghasilkan perilaku yang sama dengan nilai {@code "singleTask"} {@code launchMode} +yang dibahas di bagian sebelumnya.

+
{@link android.content.Intent#FLAG_ACTIVITY_SINGLE_TOP}
+
Jika aktivitas yang dimulai adalah aktivitas saat ini (di bagian teratas back-stack), maka +instance yang ada akan menerima panggilan ke {@link android.app.Activity#onNewIntent onNewIntent()} +sebagai ganti membuat instance baru aktivitas. +

Ini menghasilkan perilaku yang sama dengan nilai {@code "singleTop"} {@code launchMode} +yang dibahas di bagian sebelumnya.

+
{@link android.content.Intent#FLAG_ACTIVITY_CLEAR_TOP}
+
Jika aktivitas yang dimulai sudah berjalan dalam tugas saat ini, maka sebagai +ganti meluncurkan instance baru aktivitas tersebut, semua kegiatan lain di atasnya akan +dimusnahkan dan intent ini akan disampaikan ke instance aktivitas yang dilanjutkan (sekarang di atas), +melalui {@link android.app.Activity#onNewIntent onNewIntent()}). +

Tidak ada nilai untuk atribut {@code launchMode} + yang menghasilkan perilaku ini.

+

{@code FLAG_ACTIVITY_CLEAR_TOP} paling sering digunakan bersama dengan + {@code FLAG_ACTIVITY_NEW_TASK}. +Bila digunakan bersama-sama, flag ini adalah cara penempatan aktivitas yang ada +dalam tugas lain dan meletakkannya dalam posisi yang memungkinkannya merespons intent.

+

Catatan: Jika mode pembuka aktivitas yang didesain adalah +{@code "standard"}, +ini juga akan dihapus dari back-stack dan instance baru akan diluncurkan di tempatnya untuk menangani +intent yang masuk. Itu karena instance baru selalu dibuat untuk intent baru bila +mode peluncuran adalah {@code "standard"}.

+
+ + + + + + +

Menangani afinitas

+ +

Afinitas menunjukkan tugas mana yang disukai aktivitas untuk dimiliki. Secara default, semua +aktivitas aplikasi yang sama memiliki afinitas untuk satu sama lain. Jadi, secara default, semua +aktivitas dalam aplikasi yang sama lebih menyukai berada dalam tugas yang sama. Akan tetapi, Anda bisa memodifikasi +afinitas default untuk suatu aktivitas. Aktivitas yang didefinisikan dalam +aplikasi yang berbeda bisa berbagi afinitas, atau aktivitas yang didefinisikan dalam aplikasi yang sama bisa +diberi afinitas tugas yang berbeda.

+ +

Anda bisa memodifikasi afinitas untuk setiap yang diberikan +dengan atribut {@code taskAffinity} +elemen {@code <activity>}.

+ +

Atribut {@code taskAffinity} +mengambil nilai string, yang harus unik dari nama paket default +yang dideklarasikan dalam elemen +{@code <manifest>} +, karena sistem menggunakan nama untuk mengidentifikasi afinitas +tugas default untuk aplikasi.

+ +

Afinitas berperan dalam dua keadaan:

+ + +

Tip: Jika file {@code .apk} berisi lebih dari satu "aplikasi" +dari sudut pandang pengguna, Anda mungkin perlu menggunakan atribut {@code taskAffinity} + untuk menetapkan afinitas berbeda pada aktivitas yang terkait dengan setiap "aplikasi".

+ + + +

Menghapus back-stack

+ +

Jika pengguna meninggalkan tugas dalam waktu yang lama, sistem akan menghapus tugas semua aktivitas kecuali +aktivitas akar. Bila pengguna kembali ke tugas itu lagi, hanya aktivitas akar yang akan dipulihkan. +Sistem berperilaku seperti ini, karena, setelah sekian waktu, pengguna mungkin telah mengabaikan +apa yang mereka kerjakan sebelum 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 {@code "true"} dalam aktivitas akar tugas, +perilaku default yang baru dijelaskan tidak akan terjadi. + Tugas akan mempertahankan semua aktivitas dalam back-stack bahkan setelah sekian lama.
+ +
clearTaskOnLaunch
+
Jika atribut ini diatur ke {@code "true"} dalam aktivitas akar tugas, back- +stack akan dihapus hingga aktivitas akar bila pengguna meninggalkan tugas +dan kembali lagi. Dengan kata lain, ini adalah lawan dari + +{@code alwaysRetainTaskState}. Pengguna selalu kembali ke tugas dengan +status awalnya, walaupun hanya sebentar meninggalkan tugas.
+ +
finishOnTaskLaunch +
+
Atribut ini seperti {@code clearTaskOnLaunch}, +namun beroperasi pada +satu aktivitas, bukan pada seluruh tugas. Hal ini juga bisa menyebabkan aktivitas +hilang, termasuk aktivitas akar. Bila ini diatur ke {@code "true"}, +aktivitas akan tetap menjadi bagian dari tugas hanya untuk sesi saat ini. Jika pengguna +keluar dan kemudian kembali ke tugas tersebut, tugas tidak akan ada lagi.
+
+ + + + +

Memulai tugas

+ +

Anda bisa mengatur aktivitas sebagai titik masuk untuk tugas dengan memberikan filter intent dengan +{@code "android.intent.action.MAIN"} sebagai tindakan yang ditetapkan dan +{@code "android.intent.category.LAUNCHER"} +sebagai kategori yang ditetapkan. Misalnya:

+ +
+<activity ... >
+    <intent-filter ... >
+        <action android:name="android.intent.action.MAIN" />
+        <category android:name="android.intent.category.LAUNCHER" />
+    </intent-filter>
+    ...
+</activity>
+
+ +

Filter intent semacam ini akan menyebabkan ikon dan label untuk +aktivitas ditampilkan dalam launcher aplikasi, yang akan memberi cara kepada pengguna untuk meluncurkan aktivitas dan +kembali ke tugas yang dibuatnya kapan saja setelah ia telah diluncurkan. +

+ +

Kemampuan kedua ini penting: Pengguna harus bisa meninggalkan tugas dan kemudian kembali ke tugas tersebut +nanti dengan menggunakan launcher aktivitas ini. Karena itu, kedua mode +pembuka yang menandai aktivitas selalu memulai tugas, {@code "singleTask"} dan +{@code "singleInstance"}, hanya boleh digunakan bila aktivitas memiliki filter +{@link android.content.Intent#ACTION_MAIN} +dan {@link android.content.Intent#CATEGORY_LAUNCHER}. Bayangkan, misalnya, apa yang akan +terjadi jika filter tidak ada: Intent meluncurkan aktivitas{@code "singleTask"}, memulai +tugas yang baru, dan pengguna menghabiskan lebih banyak waktu mengerjakan tugas tersebut. Pengguna kemudian menekan tombol +Home. Tugas kini dikirim ke latar belakang dan tidak terlihat. Sekarang pengguna tidak memiliki cara untuk kembali +ke tugas tersebut, karena tidak dinyatakan dalam launcher aplikasi.

+ +

Untuk kasus-kasus di mana Anda tidak ingin pengguna bisa kembali ke aktivitas, atur dalam +<activity> + pada +{@code finishOnTaskLaunch} +elemen ke {@code "true"} (lihat Menghapus back-stack).

+ +

Informasi lebih jauh tentang cara menyatakan dan mengelola tugas dan aktivitas dalam +layar ikhtisar tersedia dalam +Layar Ikhtisar.

+ + -- cgit v1.2.3