Layar Terbaru, juga disebut layar Ringkasan, tugas terbaru daftar aplikasi, atau layar aplikasi terbaru, adalah UI tingkat sistem yang mencantumkan daftar yang terakhir diakses aktivitas dan tugas. Pengguna dapat menavigasi daftar, memilih tugas untuk melanjutkan, atau menghapus tugas dari daftar dengan menggesernya.
Layar Terbaru menggunakan tampilan yang berpusat pada dokumen model—diperkenalkan di Android 5.0 (API tingkat 21)—di mana beberapa kasus aktivitas yang sama yang berisi dokumen berbeda dapat muncul sebagai tugas di Layar terbaru. Misalnya, Google Drive mungkin memiliki tugas untuk setiap beberapa dokumen Google. Setiap dokumen muncul sebagai tugas di tab Terbaru layar:
Contoh umum lainnya adalah ketika pengguna menggunakan browser mereka dan mereka mengetuk Bagikan > Gmail. Layar Tulis aplikasi Gmail akan muncul. Mengetuk Tombol Terbaru pada saat itu menunjukkan Chrome dan Gmail berjalan terpisah tugas:
Biasanya, Anda membiarkan sistem mendefinisikan bagaimana tugas dan aktivitas Anda yang ditampilkan di layar Terbaru. Anda tidak perlu memodifikasinya perilaku model. Namun, aplikasi Anda dapat menentukan bagaimana dan kapan aktivitas muncul di Layar terbaru.
Tujuan ActivityManager.AppTask
memungkinkan Anda mengelola tugas, dan flag aktivitas kelas Class Intent
memungkinkan Anda menentukan kapan aktivitas ditambahkan atau dihapus dari layar Terbaru. Selain itu, Atribut <activity>
memungkinkan Anda menetapkan perilaku di manifes.
Menambahkan tugas ke layar Terbaru
Menggunakan flag class Intent
untuk menambahkan tugas memberi Anda kontrol yang lebih besar atas waktu dan cara dokumen dibuka atau dibuka kembali di layar {i>Recents<i}. Saat Anda menggunakan <activity>
, Anda dapat memilih antara selalu membuka dokumen di tugas baru atau menggunakan kembali dokumen yang sudah ada tugas untuk dokumen itu.
Menggunakan flag Intent untuk menambahkan tugas
Saat membuat dokumen baru untuk aktivitas Anda, Anda memanggil metode startActivity()
, dengan meneruskan intent yang akan meluncurkan aktivitas ke sini. Untuk menyisipkan logika sehingga sistem memperlakukan aktivitas Anda sebagai tugas baru di di layar, teruskan FLAG_ACTIVITY_NEW_DOCUMENT
flag di addFlags()
dari Intent
yang meluncurkan aktivitas Anda.
Jika Anda menetapkan FLAG_ACTIVITY_MULTIPLE_TASK
ketika Anda membuat dokumen baru, sistem akan selalu membuat tugas baru dengan aktivitas target sebagai root. Setelan ini memungkinkan dokumen yang sama dibuka di lebih dari satu tugas. Kode berikut menunjukkan bagaimana yang melakukan hal ini:
Kotlin
fun createNewDocument(view: View) { val newDocumentIntent = newDocumentIntent() if (useMultipleTasks) { newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK) } startActivity(newDocumentIntent) } private fun newDocumentIntent(): Intent = Intent(this, NewDocumentActivity::class.java).apply { addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT or android.content.Intent.FLAG_ACTIVITY_RETAIN_IN_RECENTS) putExtra(KEY_EXTRA_NEW_DOCUMENT_COUNTER, documentCounter++) }
Java
public void createNewDocument(View view) { final Intent newDocumentIntent = newDocumentIntent(); if (useMultipleTasks) { newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK); } startActivity(newDocumentIntent); } private Intent newDocumentIntent() { boolean useMultipleTasks = checkbox.isChecked(); final Intent newDocumentIntent = new Intent(this, NewDocumentActivity.class); newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT); newDocumentIntent.putExtra(KEY_EXTRA_NEW_DOCUMENT_COUNTER, documentCounter++); return newDocumentIntent; } }
Ketika aktivitas utama meluncurkan aktivitas baru, sistem akan mencari melalui tugas yang ada untuk tujuan yang intent-nya cocok dengan nama komponen intent dan data intent untuk aktivitas tersebut. Jika tugas tidak ditemukan, atau intent yang ada di dalamnya FLAG_ACTIVITY_MULTIPLE_TASK
, tugas baru dibuat dengan aktivitas sebagai root-nya.
Jika sistem menemukan tugas yang intent-nya cocok dengan nama komponen intent dan data intent, fungsi ini membawa tugas tersebut ke depan dan meneruskan intent baru ke onNewIntent()
Aktivitas baru mendapatkan intent dan membuat dokumen baru di tab Terbaru seperti yang ditunjukkan pada contoh berikut:
Kotlin
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_new_document) documentCount = intent .getIntExtra(DocumentCentricActivity.KEY_EXTRA_NEW_DOCUMENT_COUNTER, 0) documentCounterTextView = findViewById(R.id.hello_new_document_text_view) setDocumentCounterText(R.string.hello_new_document_counter) } override fun onNewIntent(newIntent: Intent) { super.onNewIntent(newIntent) /* If FLAG_ACTIVITY_MULTIPLE_TASK has not been used, this Activity will be reused. */ setDocumentCounterText(R.string.reusing_document_counter) }
Java
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_new_document); documentCount = getIntent() .getIntExtra(DocumentCentricActivity.KEY_EXTRA_NEW_DOCUMENT_COUNTER, 0); documentCounterTextView = (TextView) findViewById( R.id.hello_new_document_text_view); setDocumentCounterText(R.string.hello_new_document_counter); } @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); /* If FLAG_ACTIVITY_MULTIPLE_TASK has not been used, this activity is reused to create a new document. */ setDocumentCounterText(R.string.reusing_document_counter); }
Gunakan atribut aktivitas untuk menambahkan tugas
Suatu aktivitas juga bisa menetapkan dalam manifesnya bahwa aktivitas itu selalu diluncurkan ke dalam tugas dengan menggunakan <activity>
atribut android:documentLaunchMode
. Atribut ini memiliki empat nilai, yang menghasilkan efek berikut saat pengguna membuka dokumen dengan aplikasi:
intoExisting
- Aktivitas menggunakan ulang tugas yang ada untuk dokumen. Ini sama dengan mengatur
FLAG_ACTIVITY_NEW_DOCUMENT
flag tanpa menyetelFLAG_ACTIVITY_MULTIPLE_TASK
flag, seperti yang dijelaskan dalam Menggunakan flag Intent untuk menambahkan tugas. always
- Aktivitas ini membuat tugas baru untuk dokumen, meskipun dokumen itu sudah dibuka. Menggunakan nilai ini sama dengan mengatur kedua Tanda
FLAG_ACTIVITY_NEW_DOCUMENT
danFLAG_ACTIVITY_MULTIPLE_TASK
. none
- Aktivitas tidak membuat tugas baru untuk dokumen. Terbaru layar memperlakukan aktivitas seperti default-nya. Menampilkan satu tugas untuk aplikasi, yang dilanjutkan dari aktivitas apa pun yang terakhir dipanggil pengguna.
never
- Aktivitas tidak membuat tugas baru untuk dokumen. Menetapkan nilai ini akan menggantikan perilaku
FLAG_ACTIVITY_NEW_DOCUMENT
danFLAG_ACTIVITY_MULTIPLE_TASK
penanda. Jika salah satunya disetel dalam intent, dan layar Terbaru menampilkan satu tugas untuk aplikasi, tugas itu dilanjutkan dari aktivitas apa pun terakhir dipanggil.
Menghapus tugas
Secara default, tugas dokumen otomatis keluar dari layar Terbaru setelah aktivitasnya selesai. Anda dapat mengganti perilaku ini dengan ActivityManager.AppTask
dengan flag Intent
, atau dengan atribut <activity>
.
Anda selalu bisa mengecualikan tugas dari layar Terbaru sepenuhnya dengan mengatur atribut <activity>
android:excludeFromRecents
ke true
.
Anda dapat menetapkan jumlah maksimum tugas yang dapat disertakan aplikasi Anda dalam Layar terbaru dengan menyetel Atribut <activity>
android:maxRecents
menjadi nilai bilangan bulat. Ketika jumlah tugas maksimum tercapai, tugas yang paling jarang digunakan akan hilang dari layar Terbaru. Defaultnya adalah 16, dan nilai maksimumnya adalah 50 (25 untuk perangkat dengan memori rendah). Nilai lebih sedikit dari 1 tidak valid.
Menggunakan class AppTask untuk menghapus tugas
Dalam aktivitas yang membuat tugas baru di layar Terbaru, Anda dapat menentukan kapan harus menghapus tugas dan menyelesaikan semua aktivitas yang terkait dengannya dengan memanggil finishAndRemoveTask()
berikut:
Kotlin
fun onRemoveFromOverview(view: View) { // It is good pratice to remove a document from the overview stack if not needed anymore. finishAndRemoveTask() }
Java
public void onRemoveFromRecents(View view) { // The document is no longer needed; remove its task. finishAndRemoveTask(); }
Pertahankan tugas yang sudah selesai
Jika Anda ingin mempertahankan tugas di layar Terbaru, meskipun aktivitasnya telah selesai, teruskan FLAG_ACTIVITY_RETAIN_IN_RECENTS
tanda di Metode addFlags()
dari intent yang meluncurkan aktivitas.
Kotlin
private fun newDocumentIntent() = Intent(this, NewDocumentActivity::class.java).apply { addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT or android.content.Intent.FLAG_ACTIVITY_RETAIN_IN_RECENTS) putExtra(KEY_EXTRA_NEW_DOCUMENT_COUNTER, getAndIncrement()) }
Java
private Intent newDocumentIntent() { final Intent newDocumentIntent = new Intent(this, NewDocumentActivity.class); newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT | android.content.Intent.FLAG_ACTIVITY_RETAIN_IN_RECENTS); newDocumentIntent.putExtra(KEY_EXTRA_NEW_DOCUMENT_COUNTER, getAndIncrement()); return newDocumentIntent; }
Untuk memperoleh efek yang sama, setel atribut Atribut <activity>
android:autoRemoveFromRecents
ke false
. Nilai defaultnya adalah true
untuk aktivitas dokumen dan false
untuk aktivitas rutin. Penggunaan atribut ini akan mengganti FLAG_ACTIVITY_RETAIN_IN_RECENTS
.
Mengaktifkan berbagi URL terbaru (khusus Pixel)
Di perangkat Pixel yang menjalankan Android 12 atau yang lebih baru, pengguna dapat berbagi link ke konten web yang baru saja dilihat langsung dari layar Terbaru. Setelah berkunjung konten dalam aplikasi, pengguna dapat menggeser ke layar Terbaru dan menemukan aplikasi tempat mereka melihat konten, lalu ketuk tombol link untuk menyalin atau membagikan .
Aplikasi apa pun dapat mengaktifkan penautan Terbaru untuk pengguna dengan menyediakan UI web dan mengganti onProvideAssistContent()
, seperti yang ditunjukkan dalam contoh berikut:
Kotlin
class MainActivity : AppCompatActivity() { protected fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) } fun onProvideAssistContent(outContent: AssistContent) { super.onProvideAssistContent(outContent) outContent.setWebUri(Uri.parse("https://example.com/myCurrentPage")) } }
Java
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public void onProvideAssistContent(AssistContent outContent) { super.onProvideAssistContent(outContent); outContent.setWebUri(Uri.parse("https://example.com/myCurrentPage")); } }