1 page.title=Layar Ikhtisar 2 page.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) 40 UI tingkat sistem yang mencantumkan <a href="{@docRoot}guide/components/activities.html"> 41 aktivitas</a> dan <a href="{@docRoot}guide/components/tasks-and-back-stack.html">tugas</a> yang baru saja diakses. Pengguna 42 bisa menyusuri daftar ini dan memilih satu tugas untuk dilanjutkan, atau pengguna bisa menghapus tugas dari 43 daftar dengan gerakan mengusap. Dengan dirilisnya Android 5.0 (API level 21), beberapa instance aktivitas yang 44 sama yang berisi dokumen berbeda dapat muncul sebagai tugas di layar ikhtisar. Misalnya, 45 Google Drive mungkin memiliki satu tugas untuk setiap beberapa dokumen Google. Setiap dokumen muncul sebagai 46 tugas 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 50 Google Drive, masing-masing dinyatakan sebagai tugas terpisah.</p> 51 52 <p>Biasanya Anda harus mengizinkan sistem mendefinisikan cara menyatakan tugas dan 53 aktivitas di layar ikhtisar, dan Anda tidak perlu memodifikasi perilaku ini. 54 Akan 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 57 layar 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 63 atas 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 66 yang 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 73 menjalankan aktivitas tersebut. Untuk menyisipkan jeda logis agar sistem memperlakukan aktivitas Anda sebagai tugas 74 baru di layar ikhtisar, teruskan flag {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT} 75 dalam metode {@link android.content.Intent#addFlags(int) addFlags()} dari {@link android.content.Intent} 76 yang memulai aktivitas itu.</p> 77 78 <p class="note"><strong>Catatan:</strong> Flag {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT} 79 menggantikan flag {@link android.content.Intent#FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET}, 80 yang 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 83 dokumen baru, sistem akan selalu membuat tugas baru dengan aktivitas target sebagai akar. 84 Dengan pengaturan ini, dokumen yang sama dapat dibuka di lebih dari satu tugas. Kode berikut memperagakan 85 cara aktivitas utama melakukannya:</p> 86 87 <p class="code-caption"><a href="{@docRoot}samples/DocumentCentricApps/index.html"> 88 DocumentCentricActivity.java</a></p> 89 <pre> 90 public 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 115 manifes.</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 119 tidak 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 121 mengedepankan tugas itu dan meneruskan intent baru ke {@link android.app.Activity#onNewIntent onNewIntent()}. 122 Aktivitas baru akan mendapatkan intent dan membuat dokumen baru di layar ikhtisar, seperti dalam 123 contoh berikut:</p> 124 125 <p class="code-caption"><a href="{@docRoot}samples/DocumentCentricApps/index.html"> 126 NewDocumentActivity.java</a></p> 127 <pre> 128 @Override 129 protected 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 140 protected 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 153 atribut <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 156 bila 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 173 dilanjutkan 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 179 intent, 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}, 184 aktivitas 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 190 selesai. Anda bisa mengesampingkan perilaku ini dengan kelas {@link android.app.ActivityManager.AppTask}, 191 dengan 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 200 atribut <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 203 digunakan 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 209 menetapkan kapan menghapus tugas dan menyelesaikan semua aktivitas yang terkait dengannya 210 dengan memanggil metode {@link android.app.ActivityManager.AppTask#finishAndRemoveTask() finishAndRemoveTask()}.</p> 211 212 <p class="code-caption"><a href="{@docRoot}samples/DocumentCentricApps/index.html"> 213 NewDocumentActivity.java</a></p> 214 <pre> 215 public 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()} 223 akan mengesampingkan penggunaan tag {@link android.content.Intent#FLAG_ACTIVITY_RETAIN_IN_RECENTS}, seperti 224 dibahas 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 229 flag {@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"> 233 DocumentCentricActivity.java</a></p> 234 <pre> 235 private 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} 248 untuk 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