• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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&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
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">&lt;activity&gt;</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&#64;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&#64;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">&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
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&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
200atribut <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
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">&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}
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