1page.title=Layar Ikhtisar 2page.tags="recents","overview" 3 4@jd:body 5 6<div id="qv-wrapper"> 7<div id="qv"> 8 9 <h2>Dalam dokumen ini</h2> 10 <ol> 11 <li><a href="#adding">Menambahkan Tugas ke Layar Ikhtisar</a> 12 <ol> 13 <li><a href="#flag-new-doc">Menggunakan flag Intent untuk menambahkan tugas</a></li> 14 <li><a href="#attr-doclaunch">Menggunakan atribut Aktivitas untuk menambahkan tugas</a></li> 15 </ol> 16 </li> 17 <li><a href="#removing">Menghapus Tugas</a> 18 <ol> 19 <li><a href="#apptask-remove">Menggunakan kelas AppTask untuk menghapus tugas</a></li> 20 <li><a href="#retain-finished">Mempertahankan tugas yang telah selesai</a></li> 21 </ol> 22 </li> 23 </ol> 24 25 <h2>Kelas-kelas utama</h2> 26 <ol> 27 <li>{@link android.app.ActivityManager.AppTask}</li> 28 <li>{@link android.content.Intent}</li> 29 </ol> 30 31 <h2>Kode contoh</h2> 32 <ol> 33 <li><a href="{@docRoot}samples/DocumentCentricApps/index.html">Aplikasi yang berorientasi dokumen</a></li> 34 </ol> 35 36</div> 37</div> 38 39<p>Layar ikhtisar (juga disebut sebagai layar terbaru, daftar tugas terbaru, atau aplikasi terbaru) 40UI tingkat sistem yang mencantumkan <a href="{@docRoot}guide/components/activities.html"> 41aktivitas</a> dan <a href="{@docRoot}guide/components/tasks-and-back-stack.html">tugas</a> yang baru saja diakses. Pengguna 42bisa menyusuri daftar ini dan memilih satu tugas untuk dilanjutkan, atau pengguna bisa menghapus tugas dari 43daftar dengan gerakan mengusap. Dengan dirilisnya Android 5.0 (API level 21), beberapa instance aktivitas yang 44sama yang berisi dokumen berbeda dapat muncul sebagai tugas di layar ikhtisar. Misalnya, 45Google Drive mungkin memiliki satu tugas untuk setiap beberapa dokumen Google. Setiap dokumen muncul sebagai 46tugas dalam layar ikhtisar.</p> 47 48<img src="{@docRoot}images/components/recents.png" alt="" width="284" /> 49<p class="img-caption"><strong>Gambar 1.</strong> Layar ikhtisar menampilkan tiga dokumen 50Google Drive, masing-masing dinyatakan sebagai tugas terpisah.</p> 51 52<p>Biasanya Anda harus mengizinkan sistem mendefinisikan cara menyatakan tugas dan 53aktivitas di layar ikhtisar, dan Anda tidak perlu memodifikasi perilaku ini. 54Akan tetapi, aplikasi Anda dapat menentukan cara dan waktu munculnya aktivitas di layar ikhtisar. Kelas 55{@link android.app.ActivityManager.AppTask} memungkinkan Anda mengelola tugas, dan flag 56 aktivitas kelas {@link android.content.Intent} memungkinkan Anda menentukan kapan aktivitas ditambahkan atau dihapus dari 57layar ikhtisar. Selain itu, atribut <code><a href="{@docRoot}guide/topics/manifest/activity-element.html"> 58<activity></a></code> memungkinkan Anda menetapkan perilaku di manifes.</p> 59 60<h2 id="adding">Menambahkan Tugas ke Layar Ikhtisar</h2> 61 62<p>Penggunaan flag kelas {@link android.content.Intent} untuk menambahkan tugas memberi kontrol lebih besar 63atas waktu dan cara dokumen dibuka atau dibuka kembali di layar ikhtisar. Bila menggunakan atribut 64<code><a href="{@docRoot}guide/topics/manifest/activity-element.html"><activity></a></code> 65, Anda dapat memilih antara selalu membuka dokumen dalam tugas baru atau menggunakan kembali tugas 66yang ada untuk dokumen tersebut.</p> 67 68<h3 id="flag-new-doc">Menggunakan flag Intent untuk menambahkan tugas</h3> 69 70<p>Bila membuat dokumen baru untuk aktivitas, Anda memanggil metode 71{@link android.app.ActivityManager.AppTask#startActivity(android.content.Context, android.content.Intent, android.os.Bundle) startActivity()} 72 dari kelas {@link android.app.ActivityManager.AppTask}, dengan meneruskannya ke intent yang 73menjalankan aktivitas tersebut. Untuk menyisipkan jeda logis agar sistem memperlakukan aktivitas Anda sebagai tugas 74baru di layar ikhtisar, teruskan flag {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT} 75dalam metode {@link android.content.Intent#addFlags(int) addFlags()} dari {@link android.content.Intent} 76yang memulai aktivitas itu.</p> 77 78<p class="note"><strong>Catatan:</strong> Flag {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT} 79menggantikan flag {@link android.content.Intent#FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET}, 80yang tidak digunakan lagi pada Android 5.0 (API level 21).</p> 81 82<p>Jika Anda menetapkan flag {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK} saat membuat 83dokumen baru, sistem akan selalu membuat tugas baru dengan aktivitas target sebagai akar. 84Dengan pengaturan ini, dokumen yang sama dapat dibuka di lebih dari satu tugas. Kode berikut memperagakan 85cara aktivitas utama melakukannya:</p> 86 87<p class="code-caption"><a href="{@docRoot}samples/DocumentCentricApps/index.html"> 88DocumentCentricActivity.java</a></p> 89<pre> 90public void createNewDocument(View view) { 91 final Intent newDocumentIntent = newDocumentIntent(); 92 if (useMultipleTasks) { 93 newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK); 94 } 95 startActivity(newDocumentIntent); 96 } 97 98 private Intent newDocumentIntent() { 99 boolean useMultipleTasks = mCheckbox.isChecked(); 100 final Intent newDocumentIntent = new Intent(this, NewDocumentActivity.class); 101 newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT); 102 newDocumentIntent.putExtra(KEY_EXTRA_NEW_DOCUMENT_COUNTER, incrementAndGet()); 103 return newDocumentIntent; 104 } 105 106 private static int incrementAndGet() { 107 Log.d(TAG, "incrementAndGet(): " + mDocumentCounter); 108 return mDocumentCounter++; 109 } 110} 111</pre> 112 113<p class="note"><strong>Catatan:</strong> Aktivitas yang dimulai dengan flag {@code FLAG_ACTIVITY_NEW_DOCUMENT} 114 harus telah menetapkan nilai atribut {@code android:launchMode="standard"} (default) dalam 115manifes.</p> 116 117<p>Bila aktivitas utama memulai aktivitas baru, sistem akan mencari tugas yang intent 118-nya cocok dengan nama komponen intent dalam tugas-tugas yang sudah ada dan mencari aktivitas dalam data Intent. Jika tugas 119tidak ditemukan, atau intent ada dalam flag {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK} 120, tugas baru akan dibuat dengan aktivitas tersebut sebagai akarnya. Jika ditemukan, sistem akan 121mengedepankan tugas itu dan meneruskan intent baru ke {@link android.app.Activity#onNewIntent onNewIntent()}. 122Aktivitas baru akan mendapatkan intent dan membuat dokumen baru di layar ikhtisar, seperti dalam 123contoh berikut:</p> 124 125<p class="code-caption"><a href="{@docRoot}samples/DocumentCentricApps/index.html"> 126NewDocumentActivity.java</a></p> 127<pre> 128@Override 129protected void onCreate(Bundle savedInstanceState) { 130 super.onCreate(savedInstanceState); 131 setContentView(R.layout.activity_new_document); 132 mDocumentCount = getIntent() 133 .getIntExtra(DocumentCentricActivity.KEY_EXTRA_NEW_DOCUMENT_COUNTER, 0); 134 mDocumentCounterTextView = (TextView) findViewById( 135 R.id.hello_new_document_text_view); 136 setDocumentCounterText(R.string.hello_new_document_counter); 137} 138 139@Override 140protected void onNewIntent(Intent intent) { 141 super.onNewIntent(intent); 142 /* If FLAG_ACTIVITY_MULTIPLE_TASK has not been used, this activity 143 is reused to create a new document. 144 */ 145 setDocumentCounterText(R.string.reusing_document_counter); 146} 147</pre> 148 149 150<h3 id="#attr-doclaunch">Menggunakan atribut Aktivitas untuk menambahkan tugas</h3> 151 152<p>Aktivitas juga dapat menetapkan dalam manifesnya agar selalu dimulai ke dalam tugas baru dengan menggunakan 153atribut <code><a href="{@docRoot}guide/topics/manifest/activity-element.html"><activity></a></code> 154, <a href="{@docRoot}guide/topics/manifest/activity-element.html#dlmode"> 155{@code android:documentLaunchMode}</a>. Atribut ini memiliki empat nilai yang menghasilkan efek berikut 156bila pengguna membuka dokumen dengan aplikasi:</p> 157 158<dl> 159 <dt>"{@code intoExisting}"</dt> 160 <dd>Aktivitas menggunakan kembali tugas yang ada untuk dokumen tersebut. Ini sama dengan mengatur flag 161 {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT} <em>tanpa</em> mengatur flag 162 {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK}, seperti dijelaskan dalam 163 <a href="#flag-new-doc">Menggunakan flag Intent untuk menambahkan tugas</a>, di atas.</dd> 164 165 <dt>"{@code always}"</dt> 166 <dd>Aktivitas ini membuat tugas baru untuk dokumen, meski dokumen sudah dibuka. Menggunakan 167 nilai ini sama dengan menetapkan flag {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT} 168 maupun {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK}.</dd> 169 170 <dt>"{@code none”}"</dt> 171 <dd>Aktivitas ini tidak membuat tugas baru untuk dokumen. Layar ikhtisar memperlakukan 172 aktivitas seperti itu secara default: satu tugas ditampilkan untuk aplikasi, yang 173dilanjutkan dari aktivitas apa pun yang terakhir dipanggil pengguna.</dd> 174 175 <dt>"{@code never}"</dt> 176 <dd>Aktivitas ini tidak membuat tugas baru untuk dokumen. Mengatur nilai ini akan mengesampingkan 177 perilaku flag {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT} 178 dan {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK}, jika salah satunya ditetapkan di 179intent, dan layar ikhtisar menampilkan satu tugas untuk aplikasi, yang dilanjutkan dari 180 aktivitas apa pun yang terakhir dipanggil pengguna.</dd> 181</dl> 182 183<p class="note"><strong>Catatan:</strong> Untuk nilai selain {@code none} dan {@code never}, 184aktivitas harus didefinisikan dengan {@code launchMode="standard"}. Jika atribut ini tidak ditetapkan, maka 185{@code documentLaunchMode="none"} akan digunakan.</p> 186 187<h2 id="removing">Menghapus Tugas</h2> 188 189<p>Secara default, tugas dokumen secara otomatis dihapus dari layar ikhtisar bila aktivitasnya 190selesai. Anda bisa mengesampingkan perilaku ini dengan kelas {@link android.app.ActivityManager.AppTask}, 191dengan flag {@link android.content.Intent} atau atribut <code><a href="{@docRoot}guide/topics/manifest/activity-element.html"> 192<activity></a></code>.</p> 193 194<p>Kapan saja Anda bisa mengecualikan tugas dari layar ikhtisar secara keseluruhan dengan menetapkan atribut 195<code><a href="{@docRoot}guide/topics/manifest/activity-element.html"><activity></a></code> 196, <a href="{@docRoot}guide/topics/manifest/activity-element.html#exclude"> 197{@code android:excludeFromRecents}</a> hingga {@code true}.</p> 198 199<p>Anda bisa menetapkan jumlah maksimum tugas yang dapat disertakan aplikasi Anda dalam layar ikhtisar dengan menetapkan 200atribut <code><a href="{@docRoot}guide/topics/manifest/activity-element.html"><activity></a></code> 201 <a href="{@docRoot}guide/topics/manifest/activity-element.html#maxrecents">{@code android:maxRecents} 202</a> ke satu nilai integer. Nilai default-nya adalah 16. Bila telah mencapai jumlah maksimum, tugas yang terakhir 203digunakan akan dihapus dari layar ikhtisar. Nilai maksimum {@code android:maxRecents} 204 adalah 50 (25 pada perangkat dengan memori sedikit); nilai yang kurang dari 1 tidak berlaku.</p> 205 206<h3 id="#apptask-remove">Menggunakan kelas AppTask untuk menghapus tugas</h3> 207 208<p>Dalam aktivitas yang membuat tugas baru di layar ikhtisar, Anda bisa 209menetapkan kapan menghapus tugas dan menyelesaikan semua aktivitas yang terkait dengannya 210dengan memanggil metode {@link android.app.ActivityManager.AppTask#finishAndRemoveTask() finishAndRemoveTask()}.</p> 211 212<p class="code-caption"><a href="{@docRoot}samples/DocumentCentricApps/index.html"> 213NewDocumentActivity.java</a></p> 214<pre> 215public void onRemoveFromRecents(View view) { 216 // The document is no longer needed; remove its task. 217 finishAndRemoveTask(); 218} 219</pre> 220 221<p class="note"><strong>Catatan:</strong> Penggunaan metode 222{@link android.app.ActivityManager.AppTask#finishAndRemoveTask() finishAndRemoveTask()} 223akan mengesampingkan penggunaan tag {@link android.content.Intent#FLAG_ACTIVITY_RETAIN_IN_RECENTS}, seperti 224dibahas di bawah ini.</p> 225 226<h3 id="#retain-finished">Mempertahankan tugas yang telah selesai</h3> 227 228<p>Jika Anda ingin mempertahankan tugas di layar ikhtisar, sekalipun aktivitas sudah selesai, teruskan 229flag {@link android.content.Intent#FLAG_ACTIVITY_RETAIN_IN_RECENTS} dalam metode 230{@link android.content.Intent#addFlags(int) addFlags()} dari Intent yang memulai aktivitas itu.</p> 231 232<p class="code-caption"><a href="{@docRoot}samples/DocumentCentricApps/index.html"> 233DocumentCentricActivity.java</a></p> 234<pre> 235private Intent newDocumentIntent() { 236 final Intent newDocumentIntent = new Intent(this, NewDocumentActivity.class); 237 newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT | 238 android.content.Intent.FLAG_ACTIVITY_RETAIN_IN_RECENTS); 239 newDocumentIntent.putExtra(KEY_EXTRA_NEW_DOCUMENT_COUNTER, incrementAndGet()); 240 return newDocumentIntent; 241} 242</pre> 243 244<p>Untuk memperoleh efek yang sama, tetapkan atribut 245<code><a href="{@docRoot}guide/topics/manifest/activity-element.html"><activity></a></code> 246 <a href="{@docRoot}guide/topics/manifest/activity-element.html#autoremrecents"> 247{@code android:autoRemoveFromRecents}</a> hingga {@code false}. Nilai default-nya adalah {@code true} 248untuk aktivitas dokumen, dan {@code false} untuk aktivitas biasa. Penggunaan atribut ini akan mengesampingkan flag 249{@link android.content.Intent#FLAG_ACTIVITY_RETAIN_IN_RECENTS}, yang telah dibahas sebelumnya.</p> 250 251 252 253 254 255 256 257