page.title=Layar Ikhtisar page.tags="recents","overview" @jd:body
Layar ikhtisar (juga disebut sebagai layar terbaru, daftar tugas terbaru, atau aplikasi terbaru) UI tingkat sistem yang mencantumkan aktivitas dan tugas yang baru saja diakses. Pengguna bisa menyusuri daftar ini dan memilih satu tugas untuk dilanjutkan, atau pengguna bisa menghapus tugas dari daftar dengan gerakan mengusap. Dengan dirilisnya Android 5.0 (API level 21), beberapa instance aktivitas yang sama yang berisi dokumen berbeda dapat muncul sebagai tugas di layar ikhtisar. Misalnya, Google Drive mungkin memiliki satu tugas untuk setiap beberapa dokumen Google. Setiap dokumen muncul sebagai tugas dalam layar ikhtisar.
Biasanya Anda harus mengizinkan sistem mendefinisikan cara menyatakan tugas dan
aktivitas di layar ikhtisar, dan Anda tidak perlu memodifikasi perilaku ini.
Akan tetapi, aplikasi Anda dapat menentukan cara dan waktu munculnya aktivitas di layar ikhtisar. Kelas
{@link android.app.ActivityManager.AppTask} memungkinkan Anda mengelola tugas, dan flag
aktivitas kelas {@link android.content.Intent} memungkinkan Anda menentukan kapan aktivitas ditambahkan atau dihapus dari
layar ikhtisar. Selain itu, atribut
<activity>
memungkinkan Anda menetapkan perilaku di manifes.
Penggunaan flag kelas {@link android.content.Intent} untuk menambahkan tugas memberi kontrol lebih besar
atas waktu dan cara dokumen dibuka atau dibuka kembali di layar ikhtisar. Bila menggunakan atribut
<activity>
, Anda dapat memilih antara selalu membuka dokumen dalam tugas baru atau menggunakan kembali tugas
yang ada untuk dokumen tersebut.
Bila membuat dokumen baru untuk aktivitas, Anda memanggil metode {@link android.app.ActivityManager.AppTask#startActivity(android.content.Context, android.content.Intent, android.os.Bundle) startActivity()} dari kelas {@link android.app.ActivityManager.AppTask}, dengan meneruskannya ke intent yang menjalankan aktivitas tersebut. Untuk menyisipkan jeda logis agar sistem memperlakukan aktivitas Anda sebagai tugas baru di layar ikhtisar, teruskan flag {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT} dalam metode {@link android.content.Intent#addFlags(int) addFlags()} dari {@link android.content.Intent} yang memulai aktivitas itu.
Catatan: Flag {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT} menggantikan flag {@link android.content.Intent#FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET}, yang tidak digunakan lagi pada Android 5.0 (API level 21).
Jika Anda menetapkan flag {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK} saat membuat dokumen baru, sistem akan selalu membuat tugas baru dengan aktivitas target sebagai akar. Dengan pengaturan ini, dokumen yang sama dapat dibuka di lebih dari satu tugas. Kode berikut memperagakan cara aktivitas utama melakukannya:
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 = mCheckbox.isChecked(); final Intent newDocumentIntent = new Intent(this, NewDocumentActivity.class); newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT); newDocumentIntent.putExtra(KEY_EXTRA_NEW_DOCUMENT_COUNTER, incrementAndGet()); return newDocumentIntent; } private static int incrementAndGet() { Log.d(TAG, "incrementAndGet(): " + mDocumentCounter); return mDocumentCounter++; } }
Catatan: Aktivitas yang dimulai dengan flag {@code FLAG_ACTIVITY_NEW_DOCUMENT} harus telah menetapkan nilai atribut {@code android:launchMode="standard"} (default) dalam manifes.
Bila aktivitas utama memulai aktivitas baru, sistem akan mencari tugas yang intent -nya cocok dengan nama komponen intent dalam tugas-tugas yang sudah ada dan mencari aktivitas dalam data Intent. Jika tugas tidak ditemukan, atau intent ada dalam flag {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK} , tugas baru akan dibuat dengan aktivitas tersebut sebagai akarnya. Jika ditemukan, sistem akan mengedepankan tugas itu dan meneruskan intent baru ke {@link android.app.Activity#onNewIntent onNewIntent()}. Aktivitas baru akan mendapatkan intent dan membuat dokumen baru di layar ikhtisar, seperti dalam contoh berikut:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_new_document); mDocumentCount = getIntent() .getIntExtra(DocumentCentricActivity.KEY_EXTRA_NEW_DOCUMENT_COUNTER, 0); mDocumentCounterTextView = (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); }
Aktivitas juga dapat menetapkan dalam manifesnya agar selalu dimulai ke dalam tugas baru dengan menggunakan
atribut <activity>
,
{@code android:documentLaunchMode}. Atribut ini memiliki empat nilai yang menghasilkan efek berikut
bila pengguna membuka dokumen dengan aplikasi:
Catatan: Untuk nilai selain {@code none} dan {@code never}, aktivitas harus didefinisikan dengan {@code launchMode="standard"}. Jika atribut ini tidak ditetapkan, maka {@code documentLaunchMode="none"} akan digunakan.
Secara default, tugas dokumen secara otomatis dihapus dari layar ikhtisar bila aktivitasnya
selesai. Anda bisa mengesampingkan perilaku ini dengan kelas {@link android.app.ActivityManager.AppTask},
dengan flag {@link android.content.Intent} atau atribut
<activity>
.
Kapan saja Anda bisa mengecualikan tugas dari layar ikhtisar secara keseluruhan dengan menetapkan atribut
<activity>
,
{@code android:excludeFromRecents} hingga {@code true}.
Anda bisa menetapkan jumlah maksimum tugas yang dapat disertakan aplikasi Anda dalam layar ikhtisar dengan menetapkan
atribut <activity>
{@code android:maxRecents}
ke satu nilai integer. Nilai default-nya adalah 16. Bila telah mencapai jumlah maksimum, tugas yang terakhir
digunakan akan dihapus dari layar ikhtisar. Nilai maksimum {@code android:maxRecents}
adalah 50 (25 pada perangkat dengan memori sedikit); nilai yang kurang dari 1 tidak berlaku.
Dalam aktivitas yang membuat tugas baru di layar ikhtisar, Anda bisa menetapkan kapan menghapus tugas dan menyelesaikan semua aktivitas yang terkait dengannya dengan memanggil metode {@link android.app.ActivityManager.AppTask#finishAndRemoveTask() finishAndRemoveTask()}.
public void onRemoveFromRecents(View view) { // The document is no longer needed; remove its task. finishAndRemoveTask(); }
Catatan: Penggunaan metode {@link android.app.ActivityManager.AppTask#finishAndRemoveTask() finishAndRemoveTask()} akan mengesampingkan penggunaan tag {@link android.content.Intent#FLAG_ACTIVITY_RETAIN_IN_RECENTS}, seperti dibahas di bawah ini.
Jika Anda ingin mempertahankan tugas di layar ikhtisar, sekalipun aktivitas sudah selesai, teruskan flag {@link android.content.Intent#FLAG_ACTIVITY_RETAIN_IN_RECENTS} dalam metode {@link android.content.Intent#addFlags(int) addFlags()} dari Intent yang memulai aktivitas itu.
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, incrementAndGet()); return newDocumentIntent; }
Untuk memperoleh efek yang sama, tetapkan atribut
<activity>
{@code android:autoRemoveFromRecents} hingga {@code false}. Nilai default-nya adalah {@code true}
untuk aktivitas dokumen, dan {@code false} untuk aktivitas biasa. Penggunaan atribut ini akan mengesampingkan flag
{@link android.content.Intent#FLAG_ACTIVITY_RETAIN_IN_RECENTS}, yang telah dibahas sebelumnya.