Home | History | Annotate | Download | only in components
      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 &lt;activity&gt;</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">&lt;activity&gt;</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 &#64;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 &#64;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">&lt;activity&gt;</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 &lt;activity&gt;</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">&lt;activity&gt;</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">&lt;activity&gt;</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">&lt;activity&gt;</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