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")); } }