1682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnspage.title=Aktivitas
2682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnspage.tags=aktivitas,intent
3682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns@jd:body
4682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
5682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<div id="qv-wrapper">
6682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<div id="qv">
7682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<h2>Dalam dokumen ini</h2>
8682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<ol>
9682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns  <li><a href="#Creating">Membuat Aktivitas</a>
10682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns    <ol>
11682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns      <li><a href="#UI">Mengimplementasikan antarmuka pengguna</a></li>
12682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns      <li><a href="#Declaring">Mendeklarasikan aktivitas dalam manifes</a></li>
13682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns    </ol>
14682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns  </li>
15682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns  <li><a href="#StartingAnActivity">Memulai Aktivitas</a>
16682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns    <ol>
17682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns      <li><a href="#StartingAnActivityForResult">Memulai aktivitas agar berhasil</a></li>
18682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns    </ol>
19682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns  </li>
20682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns  <li><a href="#ShuttingDown">Mematikan Aktivitas</a></li>
21682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns  <li><a href="#Lifecycle">Mengelola Daur Hidup Aktivitas</a>
22682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns    <ol>
23682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns      <li><a href="#ImplementingLifecycleCallbacks">Mengimplementasikan callback daur hidup</a></li>
24682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns      <li><a href="#SavingActivityState">Menyimpan status aktivitas</a></li>
25682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns      <li><a href="#ConfigurationChanges">Menangani perubahan konfigurasi</a></li>
26682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns      <li><a href="#CoordinatingActivities">Mengoordinasikan aktivitas</a></li>
27682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns    </ol>
28682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns  </li>
29682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns</ol>
30682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
31682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<h2>Kelas-kelas utama</h2>
32682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<ol>
33682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns  <li>{@link android.app.Activity}</li>
34682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns</ol>
35682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
36682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<h2>Lihat juga</h2>
37682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<ol>
38682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns  <li><a href="{@docRoot}guide/components/tasks-and-back-stack.html">Tugas dan
39682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor JohnsBack-Stack</a></li>
40682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns</ol>
41682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
42682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns</div>
43682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns</div>
44682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
45682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
46682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
47682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<p>{@link android.app.Activity} adalah sebuah komponen aplikasi yang menyediakan layar yang digunakan
48682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnspengguna untuk berinteraksi guna melakukan sesuatu, misalnya memilih nomor telepon, mengambil foto, mengirim email, atau
49682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsmenampilkan peta. Tiap aktivitas diberi sebuah jendela untuk menggambar antarmuka penggunanya. Jendela ini
50682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsbiasanya mengisi layar, namun mungkin lebih kecil daripada layar dan mengambang di atas
51682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsjendela lain.</p>
52682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
53682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<p> Sebuah aplikasi biasanya terdiri atas beberapa aktivitas yang terikat secara longgar
54682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnssatu sama lain. Biasanya, satu aktivitas dalam aplikasi ditetapkan sebagai aktivitas "utama", yang
55682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsditampilkan kepada pengguna saat membuka aplikasi untuk pertama kali. Tiap
56682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsaktivitas kemudian bisa memulai aktivitas lain untuk melakukan berbagai tindakan. Tiap kali 
57682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsaktivitas baru dimulai, aktivitas sebelumnya akan dihentikan, namun sistem mempertahankan aktivitas
58682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsdalam sebuah tumpukan ("back-stack"). Bila sebuah aktivitas baru dimulai, aktivitas itu akan didorong ke atas back-stack dan
59682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsmengambil fokus pengguna. Back-stack mematuhi mekanisme dasar tumpukan "masuk terakhir, keluar pertama",
60682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsjadi, bila pengguna selesai dengan aktivitas saat ini dan menekan tombol <em>Back</em>, aktivitas
61682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsakan dikeluarkan dari tumpukan (dan dimusnahkan) dan aktivitas sebelumnya akan dilanjutkan. (Back-stack
62682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsdibahas selengkapnya dalam dokumen <a href="{@docRoot}guide/components/tasks-and-back-stack.html">Tugas
63682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsdan Back-Stack</a>.)</p>
64682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
65682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<p>Bila aktivitas dihentikan karena ada aktivitas baru yang dimulai, aktivitas lama akan diberi tahu tentang perubahan status ini
66682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsmelalui metode callback daur hidupnya.
67682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor JohnsAda beberapa metode callback yang mungkin diterima aktivitas, karena sebuah perubahan dalam
68682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsstatusnya&mdash;apakah sistem sedang membuatnya, menghentikannya, melanjutkannya, atau menghapuskannya&mdash;dan
69682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsmasing-masing callback memberi Anda kesempatan melakukan pekerjaan tertentu yang
70682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnssesuai untuk perubahan status itu. Misalnya, bila dihentikan, aktivitas Anda harus melepas 
71682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsobjek besar, seperti koneksi jaringan atau database. Bila aktivitas dilanjutkan, Anda bisa
72682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsmemperoleh kembali sumber daya yang diperlukan dan melanjutkan tindakan yang terputus. Transisi status ini
73682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnssemuanya bagian dari daur hidup aktivitas.</p>
74682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
75682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<p>Bagian selebihnya dari dokumen ini membahas dasar-dasar cara membuat dan menggunakan aktivitas,
76682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsyang meliputi satu pembahasan lengkap tentang cara kerja daur hidup aktivitas, sehingga Anda bisa dengan benar mengelola
77682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnstransisi di antara berbagai status aktivitas.</p>
78682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
79682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
80682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
81682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<h2 id="Creating">Membuat Aktivitas</h2>
82682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
83682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<p>Untuk membuat sebuah aktivitas, Anda harus membuat subkelas {@link android.app.Activity} (atau
84682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnssubkelasnya yang ada). Dalam subkelas itu, Anda perlu mengimplementasikan metode-metode callback yang
85682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsdipanggil sistem saat aktivitas bertransisi di antara berbagai status daur hidupnya, misalnya saat
86682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsaktivitas sedang dibuat, dihentikan, dilanjutkan, atau dimusnahkan. Dua metode callback
87682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsterpenting adalah:</p>
88682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
89682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<dl>
90682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns  <dt>{@link android.app.Activity#onCreate onCreate()}</dt>
91682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns  <dd>Anda harus mengimplementasikan metode ini. Sistem memanggilnya saat membuat
92682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns    aktivitas Anda. Dalam implementasi, Anda harus menginisialisasi komponen-komponen esensial 
93682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsaktivitas.
94682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns    Yang terpenting, inilah tempat Anda harus memanggil {@link android.app.Activity#setContentView
95682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns    setContentView()} untuk mendefinisikan layout untuk antarmuka pengguna aktivitas.</dd>
96682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns  <dt>{@link android.app.Activity#onPause onPause()}</dt>
97682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns  <dd>Sistem memanggil metode ini sebagai pertanda pertama bahwa pengguna sedang meninggalkan
98682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsaktivitas Anda (walau itu tidak selalu berarti aktivitas sedang dimusnahkan). Inilah biasanya tempat Anda
99682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsharus mengikat setiap perubahan yang harus dipertahankan selepas sesi pengguna saat ini (karena
100682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnspengguna mungkin tidak kembali).</dd>
101682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns</dl>
102682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
103682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<p>Ada beberapa metode callback daur hidup lainnya yang harus Anda gunakan untuk memberikan
104682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnspengalaman pengguna yang mengalir di antara aktivitas dan menangani interupsi tidak terduga yang menyebabkan aktivitas Anda
105682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsdihentikan dan bahkan dimusnahkan. Semua metode callback daur hidup akan dibahas nanti, di
106682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsbagian tentang <a href="#Lifecycle">Mengelola Daur Hidup Aktivitas</a>.</p>
107682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
108682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
109682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
110682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<h3 id="UI">Mengimplementasikan antarmuka pengguna</h3>
111682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
112682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<p> Antarmuka pengguna aktivitas disediakan oleh hierarki objek&mdash;tampilan yang diturunkan
113682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsdari kelas {@link android.view.View}.  Tiap tampilan mengontrol sebuah ruang persegi panjang tertentu
114682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsdalam jendela aktivitas dan bisa merespons interaksi pengguna. Misalnya, sebuah tampilan mungkin berupa sebuah
115682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnstombol yang mengawali suatu tindakan bila pengguna menyentuhnya.</p>
116682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
117682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<p>Android menyediakan sejumlah tampilan siap-dibuat yang bisa Anda gunakan untuk mendesain dan mengatur
118682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnslayout. "Widget" adalah tampilan yang menyediakan elemen-elemen visual (dan interaktif) untuk layar, 
119682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsmisalnya tombol, bidang teks, kotak cek, atau sekadar sebuah gambar. "Layout" adalah tampilan yang diturunkan dari {@link
120682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsandroid.view.ViewGroup} yang memberikan sebuah model layout unik untuk tampilan anaknya, misalnya
121682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnslayout linier, layout grid, atau layout relatif. Anda juga bisa mensubkelaskan kelas-kelas {@link android.view.View} dan
122682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns{@link android.view.ViewGroup} (atau subkelas yang ada) untuk membuat widget dan
123682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnslayout Anda sendiri dan menerapkannya ke layout aktivitas Anda.</p>
124682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
125682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<p>Cara paling umum untuk mendefinisikan layout dengan menggunakan tampilan adalah dengan file layout XML yang disimpan dalam
126682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnssumber daya aplikasi Anda. Dengan cara ini, Anda bisa memelihara desain antarmuka pengguna Anda secara terpisah dari
127682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnskode yang mendefinisikan perilaku aktivitas. Anda bisa mengatur layout sebagai UI 
128682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsaktivitas Anda dengan {@link android.app.Activity#setContentView(int) setContentView()}, dengan meneruskan
129682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor JohnsID sumber daya untuk layout itu. Akan tetapi, Anda juga bisa membuat {@link android.view.View} baru dalam
130682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnskode aktivitas dan membuat hierarki tampilan dengan menyisipkan {@link
131682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsandroid.view.View} baru ke dalam {@link android.view.ViewGroup}, kemudian menggunakan layout itu dengan meneruskan akar
132682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns{@link android.view.ViewGroup} ke {@link android.app.Activity#setContentView(View)
133682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor JohnssetContentView()}.</p>
134682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
135682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<p>Untuk informasi tentang cara membuat antarmuka pengguna, lihat dokumentasi <a href="{@docRoot}guide/topics/ui/index.html">Antarmuka Pengguna</a>.</p>
136682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
137682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
138682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
139682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<h3 id="Declaring">Mendeklarasikan aktivitas dalam manifes</h3>
140682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
141682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<p>Anda harus mendeklarasikan aktivitas dalam file manifes agar file itu
142682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsbisa diakses oleh sistem. Untuk mendeklarasikan aktivitas, bukalah file manifes Anda dan tambahkan sebuah elemen <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a>
143682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnssebagai anak elemen <a href="{@docRoot}guide/topics/manifest/application-element.html">{@code &lt;application&gt;}</a>
144682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns. Misalnya:</p>
145682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
146682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<pre>
147682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns&lt;manifest ... &gt;
148682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns  &lt;application ... &gt;
149682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns      &lt;activity android:name=".ExampleActivity" /&gt;
150682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns      ...
151682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns  &lt;/application ... &gt;
152682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns  ...
153682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns&lt;/manifest &gt;
154682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns</pre>
155682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
156682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<p>Ada beberapa atribut lain yang bisa Anda sertakan dalam elemen ini, untuk mendefinisikan properti
157682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsmisalnya label untuk aktivitas, ikon untuk aktivitas, atau tema untuk memberi gaya ke
158682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor JohnsUI aktivitas. Atribut <a href="{@docRoot}guide/topics/manifest/activity-element.html#nm">{@code android:name}</a>
159682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns adalah satu-satunya atribut yang diperlukan&mdash;atribut ini menetapkan nama kelas aktivitas. Setelah
160682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor JohnsAnda mempublikasikan aplikasi, Anda tidak boleh mengubah nama ini, karena jika melakukannya, Anda bisa merusak
161682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnssebagian fungsionalitas, misalnya pintasan aplikasi (bacalah posting blog berjudul <a href="http://android-developers.blogspot.com/2011/06/things-that-cannot-change.html">Things
162682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor JohnsThat Cannot Change</a>).</p>
163682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
164682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<p>Lihat acuan elemen <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a>
165682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsuntuk informasi selengkapnya tentang cara mendeklarasikan aktivitas Anda dalam manifes.</p>
166682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
167682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
168682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<h4>Menggunakan filter intent</h4>
169682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
170682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<p>Elemen <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code
171682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns&lt;activity&gt;}</a> juga bisa menetapkan berbagai filter intent&mdash;dengan menggunakan elemen <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code
172682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns&lt;intent-filter&gt;}</a> &mdash;untuk mendeklarasikan cara komponen aplikasi lain 
173682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsmengaktifkannya.</p>
174682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
175682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<p>Bila Anda membuat aplikasi baru dengan Android SDK Tools, aktivitas stub
176682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsyang dibuat untuk Anda secara otomatis menyertakan filter intent yang mendeklarasikan respons
177682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsaktivitas pada tindakan "main" (utama) dan harus diletakkan dalam kategori "launcher"). Filter intent
178682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsterlihat seperti ini:</p>
179682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
180682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<pre>
181682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns&lt;activity android:name=".ExampleActivity" android:icon="@drawable/app_icon"&gt;
182682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns    &lt;intent-filter&gt;
183682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns        &lt;action android:name="android.intent.action.MAIN" /&gt;
184682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns        &lt;category android:name="android.intent.category.LAUNCHER" /&gt;
185682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns    &lt;/intent-filter&gt;
186682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns&lt;/activity&gt;
187682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns</pre>
188682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
189682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<p>Elemen <a href="{@docRoot}guide/topics/manifest/action-element.html">{@code
190682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns&lt;action&gt;}</a> menetapkan bahwa ini adalah titik masuk "main" ke aplikasi. Elemen <a href="{@docRoot}guide/topics/manifest/category-element.html">{@code
191682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns&lt;category&gt;}</a> menetapkan bahwa aktivitas ini harus tercantum dalam launcher aplikasi
192682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnssistem (untuk memungkinkan pengguna meluncurkan aktivitas ini).</p>
193682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
194682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<p>Jika Anda bermaksud agar aplikasi dimuat dengan sendirinya dan tidak memperbolehkan aplikasi lain
195682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsmengaktifkan aktivitasnya, maka Anda tidak memerlukan filter intent lain. Hanya satu aktivitas yang boleh
196682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsmemiliki tindakan "main" dan kategori "launcher", seperti dalam contoh sebelumnya. Aktivitas yang
197682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnstidak ingin Anda sediakan untuk aplikasi lain tidak boleh memiliki filter intent dan Anda bisa
198682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsmemulai sendiri aktivitas dengan menggunakan intent secara eksplisit (seperti dibahas di bagian berikut).</p>
199682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
200682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<p>Akan tetapi, jika ingin aktivitas Anda merespons intent implisit yang dikirim dari
201682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsaplikasi lain (dan aplikasi Anda sendiri), maka Anda harus mendefinisikan filter intent tambahan untuk
202682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsaktivitas. Untuk masing-masing tipe intent yang ingin direspons, Anda harus menyertakan sebuah <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code
203682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns&lt;intent-filter&gt;}</a> yang menyertakan elemen
204682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<a href="{@docRoot}guide/topics/manifest/action-element.html">{@code
205682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns&lt;action&gt;}</a> dan, opsional, sebuah elemen <a href="{@docRoot}guide/topics/manifest/category-element.html">{@code
206682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns&lt;category&gt;}</a> dan/atau elemen <a href="{@docRoot}guide/topics/manifest/data-element.html">{@code
207682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns&lt;data&gt;}</a>. Elemen-elemen ini menetapkan tipe intent yang bisa
208682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsdirespons oleh aktivitas Anda.</p>
209682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
210682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<p>Untuk informasi selengkapnya tentang cara aktivitas Anda merespons intent, lihat dokumen <a href="{@docRoot}guide/components/intents-filters.html">Intent dan Filter Intent</a>.
211682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns</p>
212682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
213682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
214682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
215682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<h2 id="StartingAnActivity">Memulai Aktivitas</h2>
216682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
217682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<p>Anda bisa memulai aktivitas lain dengan memanggil {@link android.app.Activity#startActivity
218682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns  startActivity()}, dengan meneruskan sebuah {@link android.content.Intent} yang menjelaskan aktivitas
219682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns  yang ingin Anda mulai. Intent menetapkan aktivitas persis yang ingin Anda mulai atau menjelaskan
220682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns  tipe tindakan yang ingin Anda lakukan (dan sistem akan memilih aktivitas yang sesuai untuk Anda,
221682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsyang bahkan
222682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns  bisa berasal dari aplikasi berbeda). Intent juga bisa membawa sejumlah kecil data untuk
223682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns  digunakan oleh aktivitas yang dimulai.</p>
224682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
225682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<p>Saat bekerja dalam aplikasi sendiri, Anda nanti akan sering meluncurkan aktivitas yang dikenal saja.
226682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns Anda bisa melakukannya dengan membuat intent yang mendefinisikan secara eksplisit aktivitas yang ingin Anda mulai,
227682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsdengan menggunakan nama kelas. Misalnya, beginilah cara satu aktivitas memulai aktivitas lain bernama {@code
228682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor JohnsSignInActivity}:</p>
229682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
230682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<pre>
231682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor JohnsIntent intent = new Intent(this, SignInActivity.class);
232682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor JohnsstartActivity(intent);
233682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns</pre>
234682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
235682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<p>Akan tetapi, aplikasi Anda mungkin juga perlu melakukan beberapa tindakan, misalnya mengirim email,
236682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns  pesan teks, atau pembaruan status, dengan menggunakan data dari aktivitas Anda. Dalam hal ini, aplikasi Anda mungkin
237682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns tidak memiliki aktivitasnya sendiri untuk melakukan tindakan tersebut, sehingga Anda bisa memanfaatkan aktivitas
238682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns  yang disediakan oleh aplikasi lain pada perangkat, yang bisa melakukan tindakan itu untuk Anda. Inilah saatnya
239682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsintent benar-benar berharga&mdash;Anda bisa membuat intent yang menjelaskan tindakan yang ingin
240682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsdilakukan dan sistem
241682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns  akan meluncurkan aktivitas yang tepat dari aplikasi lain. Jika ada
242682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns  beberapa aktivitas yang bisa menangani intent itu, pengguna bisa memilih aktivitas yang akan digunakan. Misalnya,
243682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns  jika Anda ingin memperbolehkan pengguna mengirim pesan email, Anda bisa membuat
244682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns  intent berikut:</p>
245682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
246682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<pre>
247682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor JohnsIntent intent = new Intent(Intent.ACTION_SEND);
248682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsintent.putExtra(Intent.EXTRA_EMAIL, recipientArray);
249682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor JohnsstartActivity(intent);
250682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns</pre>
251682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
252682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<p>Ekstra {@link android.content.Intent#EXTRA_EMAIL} yang ditambahkan ke intent adalah sebuah larik string
253682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns  alamat email yang menjadi tujuan pengiriman email. Bila aplikasi email merespons intent ini,
254682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns aplikasi itu akan membaca larik string yang disediakan dalam ekstra dan meletakkannya dalam bidang "to" 
255682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns  pada formulir penulisan email. Dalam situasi ini, aktivitas aplikasi email dimulai dan bila
256682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns  pengguna selesai, aktivitas Anda akan dilanjutkan.</p>
257682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
258682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
259682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
260682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
261682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<h3 id="StartingAnActivityForResult">Memulai aktivitas agar berhasil</h3>
262682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
263682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<p>Kadang-kadang, Anda mungkin ingin menerima hasil dari aktivitas yang Anda mulai. Dalam hal itu,
264682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns  mulailah aktivitas dengan memanggil {@link android.app.Activity#startActivityForResult
265682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns  startActivityForResult()} (sebagai ganti {@link android.app.Activity#startActivity
266682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns  startActivity()}). Untuk menerima hasil dari
267682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsaktivitas selanjutnya nanti, implementasikan metode callback {@link android.app.Activity#onActivityResult onActivityResult()}
268682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns. Bila aktivitas selanjutnya selesai, aktivitas akan mengembalikan hasil dalam {@link
269682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsandroid.content.Intent} kepada metode {@link android.app.Activity#onActivityResult onActivityResult()}
270682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor JohnsAnda.</p>
271682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
272682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<p>Misalnya, mungkin Anda ingin pengguna mengambil salah satu kontaknya, sehingga aktivitas Anda bisa
273682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsmelakukan sesuatu dengan informasi dalam kontak itu. Begini caranya membuat intent tersebut dan
274682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsmenangani hasilnya:</p>
275682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
276682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<pre>
277682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsprivate void pickContact() {
278682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns    // Create an intent to "pick" a contact, as defined by the content provider URI
279682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns    Intent intent = new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI);
280682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns    startActivityForResult(intent, PICK_CONTACT_REQUEST);
281682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns}
282682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
283682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns&#64;Override
284682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsprotected void onActivityResult(int requestCode, int resultCode, Intent data) {
285682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns    // If the request went well (OK) and the request was PICK_CONTACT_REQUEST
286682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns    if (resultCode == Activity.RESULT_OK &amp;&amp; requestCode == PICK_CONTACT_REQUEST) {
287682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns        // Perform a query to the contact's content provider for the contact's name
288682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns        Cursor cursor = getContentResolver().query(data.getData(),
289682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns        new String[] {Contacts.DISPLAY_NAME}, null, null, null);
290682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns        if (cursor.moveToFirst()) { // True if the cursor is not empty
291682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns            int columnIndex = cursor.getColumnIndex(Contacts.DISPLAY_NAME);
292682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns            String name = cursor.getString(columnIndex);
293682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns            // Do something with the selected contact's name...
294682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns        }
295682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns    }
296682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns}
297682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns</pre>
298682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
299682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<p>Contoh ini menunjukkan logika dasar yang harus Anda gunakan dalam metode {@link
300682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsandroid.app.Activity#onActivityResult onActivityResult()} Anda untuk menangani 
301682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnshasil aktivitas. Syarat pertama memeriksa apakah permintaan berhasil&mdash;jika ya, maka
302682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns {@code resultCode} akan berupa {@link android.app.Activity#RESULT_OK}&mdash;dan apakah permintaan
303682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsyang direspons hasil ini dikenal&mdash;dalam hal ini, {@code requestCode} cocok dengan
304682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsparameter kedua yang dikirim dengan {@link android.app.Activity#startActivityForResult
305682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor JohnsstartActivityForResult()}. Dari sana, kode akan menangani hasil aktivitas dengan membuat query
306682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsdata yang dihasilkan dalam{@link android.content.Intent} (parameter {@code data}).</p>
307682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
308682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<p>Yang terjadi adalah {@link
309682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsandroid.content.ContentResolver} melakukan query terhadap penyedia konten, yang menghasilkan
310682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns{@link android.database.Cursor} yang memperbolehkan data query dibaca. Untuk informasi selengkapnya, lihat dokumen
311682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<a href="{@docRoot}guide/topics/providers/content-providers.html">Penyedia Konten</a>.</p>
312682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
313682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<p>Untuk informasi selengkapnya tentang menggunakan intent, lihat dokumen <a href="{@docRoot}guide/components/intents-filters.html">Intent dan Filter
314682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor JohnsIntent</a>.</p>
315682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
316682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
317682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<h2 id="ShuttingDown">Mematikan Aktivitas</h2>
318682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
319682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<p>Anda bisa mematikan aktivitas dengan memanggil metode {@link android.app.Activity#finish
320682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsfinish()}-nya. Anda juga bisa mematikan aktivitas terpisah yang sebelumnya Anda mulai dengan memanggil
321682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns{@link android.app.Activity#finishActivity finishActivity()}.</p>
322682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
323682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<p class="note"><strong>Catatan:</strong> Pada umumnya, Anda tidak boleh secara eksplisit mengakhiri aktivitas
324682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsdengan menggunakan metode-metode ini. Seperti yang dibahas di bagian berikut tentang daur hidup aktivitas,
325682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnssistem Android mengelola hidup aktivitas untuk Anda, sehingga Anda tidak perlu menyelesaikan sendiri
326682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsaktivitas tersebut. Memanggil metode-metode ini bisa berpengaruh negatif pada pengalaman
327682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnspengguna yang diharapkan dan hanya boleh digunakan bila Anda benar-benar tidak ingin pengguna kembali ke
328682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsinstance aktivitas ini.</p>
329682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
330682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
331682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<h2 id="Lifecycle">Mengelola Daur Hidup Aktivitas</h2>
332682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
333682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<p>Mengelola daur hidup aktivitas dengan mengimplementasikan metode-metode callback sangat
334682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnspenting untuk mengembangkan
335682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsaplikasi yang kuat dan fleksibel. Daur hidup aktivitas dipengaruhi langsung oleh kaitannya dengan
336682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsaktivitas lain, tugasnya, serta back-stack.</p>
337682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
338682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<p>Pada dasarnya, sebuah aktivitas bisa berada dalam tiga status:</p>
339682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
340682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<dl>
341682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns  <dt><i>Dilanjutkan</i></dt>
342682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns    <dd>Aktivitas berada di latar depan layar dan mendapatkan fokus pengguna. (Status ini
343682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnskadang-kadang disebut juga dengan "running" (berjalan).)</dd>
344682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
345682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns  <dt><i>Dihentikan sementara</i></dt>
346682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns    <dd>Aktivitas lain berada di latar depan dan mendapat fokus, namun aktivitas ini masih terlihat. Yakni,
347682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsaktivitas lain terlihat di atas aplikasi ini dan aktivitas itu setengah transparan atau tidak
348682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsmenuutpi seluruh layar. Aktivitas yang dihentikan sementara adalah benar-benar hidup (objek {@link android.app.Activity}
349682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsdipertahankan dalam memori, objek itu memelihara semua informasi status dan anggota, dan tetap dikaitkan dengan
350682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnswindow manager), namun bisa dimatikan oleh sistem dalam situasi memori sangat rendah.</dd>
351682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
352682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns  <dt><i>Dihentikan</i></dt>
353682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns    <dd>Aktivitas ditutupi sepenuhnya oleh aktivitas lain (aktivitas sekarang berada di
354682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns"latar belakang"). Aktivitas yang dihentikan juga masih hidup (objek {@link android.app.Activity}
355682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsdipertahankan dalam memori, objek itu menjaga semua informasi status dan anggota, namun <em>tidak</em>
356682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsdikaitkan dengan window manager). Akan tetapi, aktivitas tidak lagi terlihat bagi pengguna dan
357682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsbisa dimatikan oleh sistem bila memori diperlukan di lain.</dd>
358682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns</dl>
359682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
360682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<p>Jika aktivitas dihentikan sementara atau dihentikan, sistem bisa mengeluarkannya dari memori baik dengan memintanya agar
361682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsdiakhiri (memanggil metode {@link android.app.Activity#finish finish()}-nya), atau sekadar mematikan
362682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsprosesnya.  Bila dibuka lagi (setelah diakhiri atau dimatikan), aktivitas harus dibuat dari
363682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsawal.</p>
364682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
365682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
366682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
367682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<h3 id="ImplementingLifecycleCallbacks">Mengimplementasikan callback daur hidup</h3>
368682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
369682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<p>Saat bertransisi ke dalam dan ke luar berbagai status yang dijelaskan di atas, aktivitas diberi tahu
370682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsmelalui berbagai metode callback. Semua metode callback adalah sangkutan yang
371682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsbisa Anda kesampingkan untuk melakukan pekerjaan yang sesuai saat status aktivitas Anda berubah. Aktivitas skeleton
372682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsberikut menyertakan setiap metode daur hidup mendasar:</p>
373682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
374682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
375682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<pre>
376682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnspublic class ExampleActivity extends Activity {
377682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns    &#64;Override
378682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns    public void {@link android.app.Activity#onCreate onCreate}(Bundle savedInstanceState) {
379682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns        super.onCreate(savedInstanceState);
380682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns        // The activity is being created.
381682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns    }
382682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns    &#64;Override
383682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns    protected void {@link android.app.Activity#onStart onStart()} {
384682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns        super.onStart();
385682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns        // The activity is about to become visible.
386682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns    }
387682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns    &#64;Override
388682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns    protected void {@link android.app.Activity#onResume onResume()} {
389682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns        super.onResume();
390682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns        // The activity has become visible (it is now "resumed").
391682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns    }
392682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns    &#64;Override
393682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns    protected void {@link android.app.Activity#onPause onPause()} {
394682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns        super.onPause();
395682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns        // Another activity is taking focus (this activity is about to be "paused").
396682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns    }
397682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns    &#64;Override
398682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns    protected void {@link android.app.Activity#onStop onStop()} {
399682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns        super.onStop();
400682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns        // The activity is no longer visible (it is now "stopped")
401682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns    }
402682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns    &#64;Override
403682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns    protected void {@link android.app.Activity#onDestroy onDestroy()} {
404682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns        super.onDestroy();
405682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns        // The activity is about to be destroyed.
406682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns    }
407682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns}
408682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns</pre>
409682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
410682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<p class="note"><strong>Catatan:</strong> Implementasi Anda terhadap metode-metode daur hidup ini harus
411682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsselalu memanggil implementasi superkelas sebelum melakukan pekerjaan apa pun, seperti yang ditampilkan dalam contoh-contoh di atas.</p>
412682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
413682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<p>Bersama-sama, semua metode ini mendefinisikan seluruh daur hidup sebuah aktivitas. Dengan mengimplementasikan
414682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsmetode-metode ini, Anda bisa memantau tiga loop tersarang (nested loop) dalam daur hidup aktivitas: </p>
415682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
416682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<ul>
417682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<li><b>Seluruh masa hidup</b> aktivitas berlangsung antara panggilan ke {@link
418682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsandroid.app.Activity#onCreate onCreate()} dan panggilan ke {@link
419682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsandroid.app.Activity#onDestroy}. Aktivitas Anda harus melakukan penyiapan
420682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsstatus "global" (misalnya mendefinisikan layout) dalam {@link android.app.Activity#onCreate onCreate()}, dan
421682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsmelepas semua sisa sumber daya dalam {@link android.app.Activity#onDestroy}. Misalnya, jika
422682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsaktivitas Anda memiliki sebuah thread yang berjalan di latar belakang untuk mengunduh data dari jaringan, aktivitas itu bisa membuat
423682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsthread itu dalam {@link android.app.Activity#onCreate onCreate()} kemudian menghentikan thread dalam {@link
424682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsandroid.app.Activity#onDestroy}.</li>
425682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
426682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<li><p><b>Masa pakai terlihat</b> (visible lifetime) aktivitas berlangsung antara panggilan ke {@link
427682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsandroid.app.Activity#onStart onStart()} dan panggilan ke {@link
428682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsandroid.app.Activity#onStop onStop()}. Selama ini, pengguna bisa melihat aktivitas
429682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnspada layar dan berinteraksi dengannya. Misalnya, {@link android.app.Activity#onStop onStop()} dipanggil
430682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsbila sebuah aktivitas baru dimulai dan aktivitas ini tidak lagi terlihat. Di antara dua metode ini, Anda bisa
431682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsmemelihara sumber daya yang diperlukan untuk menampilkan aktivitas kepada pengguna. Misalnya, Anda bisa mendaftarkan sebuah
432682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns{@link android.content.BroadcastReceiver} dalam {@link
433682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsandroid.app.Activity#onStart onStart()} untuk memantau perubahan yang berdampak pada UI Anda, dan mencabut pendaftarannya
434682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsdalam {@link android.app.Activity#onStop onStop()} bila pengguna tidak bisa lagi melihat apa yang sedang Anda
435682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnstampilkan. Sistem bisa memanggil {@link android.app.Activity#onStart onStart()} dan {@link
436682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsandroid.app.Activity#onStop onStop()} beberapa kali selama masa pakai aktivitas, sambil
437682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsaktivitas berganti-ganti antara terlihat dan tersembunyi bagi pengguna.</p></li>
438682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
439682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<li><p><b>Masa pakai latar depan</b> aktivitas berlangsung antara panggilan ke {@link
440682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsandroid.app.Activity#onResume onResume()} dan panggilan ke {@link android.app.Activity#onPause
441682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor JohnsonPause()}. Selama waktu ini, aktivitas berada di depan semua aktivitas lain pada layar dan mendapatkan
442682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsfokus input pengguna.  Aktivitas bisa sering bertransisi ke dalam dan ke luar latar depan&mdash;misalnya,
443682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns {@link android.app.Activity#onPause onPause()} dipanggil bila perangkat masuk ke mode tidur atau
444682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsbila dialog muncul. Karena status ini bisa sering bertransisi, kode dalam dua metode ini harus
445682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnscukup ringan untuk menghindari transisi lamban yang membuat pengguna menunggu.</p></li>
446682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns</ul>
447682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
448682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<p>Gambar 1 mengilustrasikan loop dan path yang mungkin diambil sebuah aktivitas di antara status-status.
449682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor JohnsPersegi panjang mewakili metode callback yang bisa Anda implementasikan untuk melakukan operasi saat
450682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsaktivitas bertransisi di antara status. <p>
451682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
452682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<img src="{@docRoot}images/activity_lifecycle.png" alt="" />
453682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<p class="img-caption"><strong>Gambar 1.</strong> Daur hidup aktivitas.</p>
454682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
455682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<p>Metode-metode callback daur hidup yang sama tercantum dalam tabel 1, yang menjelaskan setiap metode callback
456682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnssecara lebih detail dan menentukan lokasinya masing-masing dalam
457682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsdaur hidup aktivitas keseluruhan, termasuk apakah sistem bisa mematikan aktivitas setelah
458682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsmetode callback selesai.</p>
459682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
460682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<p class="table-caption"><strong>Tabel 1.</strong> Rangkuman metode callback
461682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsdaur hidup aktivitas.</p>
462682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
463682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<table border="2" width="85%" frame="hsides" rules="rows">
464682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<colgroup align="left" span="3"></colgroup>
465682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<colgroup align="left"></colgroup>
466682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<colgroup align="center"></colgroup>
467682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<colgroup align="center"></colgroup>
468682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
469682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<thead>
470682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<tr><th colspan="3">Metode</th> <th>Keterangan</th> <th>Bisa dimatikan setelahnya?</th> <th>Berikutnya</th></tr>
471682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns</thead>
472682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
473682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<tbody>
474682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<tr>
475682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns  <td colspan="3" align="left"><code>{@link android.app.Activity#onCreate onCreate()}</code></td>
476682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns  <td>Dipanggil saat aktivitas pertama kali dibuat.
477682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns      Di sinilah Anda harus melakukan semua persiapan statis normal &mdash;
478682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns      membuat tampilan, mengikat data ke daftar, dan sebagainya.  Metode ini diberi
479682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns      sebuah objek Bundle yang berisi status aktivitas sebelumnya, jika
480682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns      status itu tertangkap (lihat <a href="#actstate">Menyimpan Status Aktivitas</a>,
481682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns      nanti).
482682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns      <p>Selalu diikuti oleh {@code onStart()}.</p></td>
483682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns  <td align="center">Tidak</td>
484682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns      <td align="center">{@code onStart()}</td>
485682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns</tr>
486682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
487682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<tr>
488682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns   <td rowspan="5" style="border-left: none; border-right: none;">&nbsp;&nbsp;&nbsp;&nbsp;</td>
489682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns   <td colspan="2" align="left"><code>{@link android.app.Activity#onRestart
490682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor JohnsonRestart()}</code></td>
491682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns   <td>Dipanggil setelah aktivitas dihentikan, tepat sebelum
492682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns       dimulai lagi.
493682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns       <p>Selalu diikuti oleh {@code onStart()}</p></td>
494682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns   <td align="center">Tidak</td>
495682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns   <td align="center">{@code onStart()}</td>
496682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns</tr>
497682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
498682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<tr>
499682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns   <td colspan="2" align="left"><code>{@link android.app.Activity#onStart onStart()}</code></td>
500682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns   <td>Dipanggil tepat sebelum aktivitas menjadi terlihat bagi pengguna.
501682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns       <p>Diikuti oleh {@code onResume()} jika aktivitas maju
502682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns       ke latar depan, atau {@code onStop()} jika menjadi tersembunyi.</p></td>
503682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns    <td align="center">Tidak</td>
504682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns    <td align="center">{@code onResume()} <br/>atau<br/> {@code onStop()}</td>
505682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns</tr>
506682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
507682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<tr>
508682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns   <td rowspan="2" style="border-left: none;">&nbsp;&nbsp;&nbsp;&nbsp;</td>
509682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns   <td align="left"><code>{@link android.app.Activity#onResume onResume()}</code></td>
510682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns   <td>Dipanggil tepat sebelum aktivitas mulai
511682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns       berinteraksi dengan pengguna.  Pada titik ini, aktivitas berada di
512682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns       puncak tumpukan aktivitas, dengan input pengguna menuju kepadanya.
513682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns       <p>Selalu diikuti oleh {@code onPause()}.</p></td>
514682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns   <td align="center">Tidak</td>
515682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns   <td align="center">{@code onPause()}</td>
516682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns</tr>
517682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
518682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<tr>
519682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns   <td align="left"><code>{@link android.app.Activity#onPause onPause()}</code></td>
520682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns   <td>Dipanggil bila sistem akan memulai pelanjutan
521682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns       aktivitas lain.  Metode ini biasanya digunakan untuk menerapkan (commit) perubahan yang tidak tersimpan pada
522682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns       data persisten, menghentikan animasi dan hal-hal lain yang mungkin menghabiskan
523682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns       CPU, dan sebagainya.  Metode ini harus melakukan apa saja yang dilakukannya dengan sangat cepat, karena
524682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns       aktivitas berikutnya tidak akan dilanjutkan hingga aktivitas ini kembali.
525682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns       <p>Diikuti oleh {@code onResume()} jika aktivitas
526682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns       kembali ke depan, atau oleh {@code onStop()} jika menjadi
527682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns       tidak terlihat bagi pengguna.</td>
528682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns   <td align="center"><strong style="color:#800000">Ya</strong></td>
529682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns   <td align="center">{@code onResume()} <br/>atau<br/> {@code onStop()}</td>
530682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns</tr>
531682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
532682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<tr>
533682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns   <td colspan="2" align="left"><code>{@link android.app.Activity#onStop onStop()}</code></td>
534682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns   <td>Dipanggil bila aktivitas tidak lagi terlihat bagi pengguna.  Hal ini
535682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns       bisa terjadi karena aktivitas sedang dimusnahkan, atau karena aktivitas lain
536682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns       (aktivitas yang ada atau yang baru) telah dilanjutkan dan sedang menutupinya.
537682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns       <p>Diikuti oleh {@code onRestart()} jika
538682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns       aktivitas kembali untuk berinteraksi dengan pengguna, atau oleh
539682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns       {@code onDestroy()} jika aktivitas ini akan menghilang.</p></td>
540682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns   <td align="center"><strong style="color:#800000">Ya</strong></td>
541682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns   <td align="center">{@code onRestart()} <br/>atau<br/> {@code onDestroy()}</td>
542682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns</tr>
543682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
544682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<tr>
545682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns   <td colspan="3" align="left"><code>{@link android.app.Activity#onDestroy
546682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor JohnsonDestroy()}</code></td>
547682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns   <td>Dipanggil sebelum aktivitas dimusnahkan.  Inilah panggilan terakhir
548682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns       yang akan diterima aktivitas.  Metode ini bisa dipanggil karena
549682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns       aktivitas selesai (seseorang memanggil <code>{@link android.app.Activity#finish
550682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns       finish()}</code> padanya), atau karena sistem memusnahkan sementara
551682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns       instance aktivitas ini untuk menghemat tempat.  Anda bisa membedakan
552682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns       kedua skenario ini dengan metode <code>{@link
553682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns       android.app.Activity#isFinishing isFinishing()}</code>.</td>
554682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns   <td align="center"><strong style="color:#800000">Ya</strong></td>
555682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns   <td align="center"><em>tidak ada</em></td>
556682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns</tr>
557682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns</tbody>
558682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns</table>
559682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
560682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<p>Kolom berlabel "Bisa dimatikan setelahnya?" menunjukkan apakah sistem bisa
561682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsatau tidak mematikan proses yang menjadi host aktivitas kapan saja <em>setelah metode kembali</em>, tanpa
562682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsmenjalankan baris lain pada kode aktivitas.  Tiga metode ini ditandai "ya": ({@link
563682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsandroid.app.Activity#onPause
564682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor JohnsonPause()}, {@link android.app.Activity#onStop onStop()}, dan {@link android.app.Activity#onDestroy
565682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor JohnsonDestroy()}). Karena {@link android.app.Activity#onPause onPause()} adalah yang pertama
566682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsdari tiga, begitu aktivitas dibuat, {@link android.app.Activity#onPause onPause()} adalah
567682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsmetode terakhir yang dipastikan akan dipanggil sebelum proses <em>bisa</em> dimatikan&mdash;jika
568682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnssistem harus memulihkan memori dalam keadaan darurat, maka {@link
569682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsandroid.app.Activity#onStop onStop()} dan {@link android.app.Activity#onDestroy onDestroy()} mungkin
570682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnstidak dipanggil. Karena itu, Anda harus menggunakan {@link android.app.Activity#onPause onPause()} untuk menulis
571682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsdata persisten yang penting (misalnya hasil edit pengguna) ke penyimpanan. Akan tetapi, Anda harus selektif dalam hal
572682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsinformasi yang harus dipertahankan selama {@link android.app.Activity#onPause onPause()}, karena setiap
573682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsprosedur pemblokiran dalam metode ini akan memblokir transisi ke aktivitas berikutnya dan memperlambat
574682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnspengalaman pengguna.</p>
575682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
576682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<p> Metode-metode yang ditandai "Tidak" dalam kolom <b>Bisa dimatikan</b> melindungi proses yang menjadi host
577682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsaktivitas dari dimatikan sejak saat metode dipanggil.  Jadi, aktivitas bisa dimatikan
578682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnssejak {@link android.app.Activity#onPause onPause()} kembali hingga waktu
579682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns{@link android.app.Activity#onResume onResume()} dipanggil. Aktivitas tidak akan lagi bisa dimatikan hingga
580682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns{@link android.app.Activity#onPause onPause()} dipanggil lagi dan kembali. </p>
581682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
582682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<p class="note"><strong>Catatan:</strong> Aktivitas yang tidak "bisa dimatikan" secara teknis oleh
583682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsdefinisi dalam tabel 1 masih bisa dimatikan oleh sistem&mdash;namun itu hany terjadi dalam
584682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnssituasi ekstrem bila tidak ada jalan lain. Kapan aktivitas bisa dimatikan
585682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsakan dibahas selengkapnya dalam dokumen <a href="{@docRoot}guide/components/processes-and-threads.html">Proses dan
586682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor JohnsThreading</a>.</p>
587682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
588682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
589682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<h3 id="SavingActivityState">Menyimpan status aktivitas</h3>
590682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
591682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<p>Pengantar untuk <a href="#Lifecycle">Mengelola Daur Hidup Aktivitas</a> secara ringkas menyebutkan
592682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsbahwa
593682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsbila aktivitas dihentikan sementara atau dihentikan, status aktivitas akan dipertahankan. Hal itu terjadi karena
594682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsobjek {@link android.app.Activity} masih ditahan dalam memori saat aktivitas dihentikan sementara atau
595682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsdihentikan&mdash;semua informasi tentang anggota dan statusnya saat ini masih hidup. Jadi, setiap perubahan
596682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsyang dibuat pengguna dalam aktivitas akan dipertahankan sehingga bila aktivitas kembali ke
597682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnslatar depan (bila "dilanjutkan"), perubahan itu masih ada.</p>
598682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
599682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<p>Akan tetapi, bila sistem memusnahkan aktivitas untuk memulihkan memori, objek {@link
600682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsandroid.app.Activity} akan dimusnahkan, sehingga sistem tidak bisa sekadar melanjutkan aktivitas dengan status
601682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnstidak berubah. Sebagai gantinya, sistem harus membuat ulang objek {@link android.app.Activity} jika pengguna
602682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsmenyusuri kembali ke aktivitas tersebut. Namun, pengguna tidak menyadari
603682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsbahwa sistem memusnahkan aktivitas dan membuatnya kembali dan, karena itu, mungkin
604682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsmengharapkan aktivitas untuk sama persis dengan sebelumnya. Dalam situasi ini, Anda bisa memastikan bahwa
605682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsinformasi penting tentang status aktivitas tetap terjaga dengan mengimplementasikan 
606682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsmetode callback tambahan yang memungkinkan Anda menyimpan informasi tentang status aktivitas: {@link
607682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsandroid.app.Activity#onSaveInstanceState onSaveInstanceState()}.</p>
608682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
609682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<p>Sistem memanggil {@link android.app.Activity#onSaveInstanceState onSaveInstanceState()}
610682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnssebelum membuat aktivitas rawan terhadap pemusnahan. Sistem meneruskan ke metode ini
611682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnssebuah {@link android.os.Bundle} tempat Anda bisa menyimpan 
612682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsinformasi status tentang aktivitas sebagai pasangan nama-nilai, dengan menggunakan metode-metode misalnya {@link
613682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsandroid.os.Bundle#putString putString()} dan {@link
614682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsandroid.os.Bundle#putInt putInt()}. Kemudian, jika sistem mematikan proses aplikasi Anda
615682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsdan pengguna menyusuri kembali ke aktivitas tersebut, sistem akan membuat kembali aktivitas dan meneruskan
616682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns{@link android.os.Bundle} ke {@link android.app.Activity#onCreate onCreate()} maupun {@link
617682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsandroid.app.Activity#onRestoreInstanceState onRestoreInstanceState()}. Dengan menggunakan salah satu 
618682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsmetode ini, Anda bisa mengekstrak status tersimpan dari {@link android.os.Bundle} dan memulihkan
619682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsstatus aktivitas. Jika tidak ada informasi status untuk dipulihkan, maka {@link
620682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsandroid.os.Bundle} yang diteruskan kepada adalah Anda null (yang akan terjadi bila aktivitas dibuat untuk
621682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnspertama kali).</p>
622682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
623682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<img src="{@docRoot}images/fundamentals/restore_instance.png" alt="" />
624682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<p class="img-caption"><strong>Gambar 2.</strong> Ada dua cara yang bisa digunakan aktivitas untuk kembali ke fokus pengguna
625682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsdengan status tetap: aktivitas dimusnahkan, kemudian dibuat kembali, dan aktivitas harus memulihkan
626682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsstatus yang disimpan sebelumnya, atau aktivitas dihentikan, kemudian dilanjutkan dengan status aktivitas
627682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnstetap.</p>
628682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
629682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<p class="note"><strong>Catatan:</strong> Tidak ada jaminan bahwa {@link
630682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsandroid.app.Activity#onSaveInstanceState onSaveInstanceState()} akan dipanggil sebelum
631682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsaktivitas Anda dimusnahkan, karena bisa saja terjadi aktivitas tidak perlu menyimpan status
632682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns(misalnya saat pengguna meninggalkan aktivitas Anda dengan menggunakan tombol <em>Back</em>, karena pengguna menutup aktivitas
633682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnssecara eksplisit
634682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns). Jika sistem memanggil {@link android.app.Activity#onSaveInstanceState
635682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor JohnsonSaveInstanceState()}, ini akan dilakukan sebelum {@link
636682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsandroid.app.Activity#onStop onStop()} dan mungkin sebelum {@link android.app.Activity#onPause
637682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor JohnsonPause()}.</p>
638682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
639682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<p>Akan tetapi, sekalipun Anda tidak melakukan apa-apa dan tidak mengimplementasikan {@link
640682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsandroid.app.Activity#onSaveInstanceState onSaveInstanceState()}, beberapa status aktivitas
641682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsakan dipulihkan oleh implementasi default {@link
642682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsandroid.app.Activity#onSaveInstanceState onSaveInstanceState()} dalam kelas {@link android.app.Activity}. Khususnya, 
643682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsimplementasi default akan memanggil metode {@link
644682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsandroid.view.View#onSaveInstanceState onSaveInstanceState()} yang sesuai untuk setiap {@link
645682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsandroid.view.View} dalam layout, yang memungkinkan setiap tampilan untuk memberi informasi tentang dirinya
646682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsyang harus disimpan. Hampir setiap widget dalam kerangka kerja Android mengimplementasikan metode ini
647682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnssebagaimana mestinya, sehingga setiap perubahan yang terlihat pada UI akan disimpan dan dipulihkan secara otomatis bila
648682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsaktivitas Anda dibuat kembali. Misalnya, widget {@link android.widget.EditText} menyimpan teks apa saja
649682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsyang dimasukkan oleh pengguna dan widget {@link android.widget.CheckBox} menyimpan baik teks itu diperiksa maupun
650682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnstidak. Satu-satunya pekerjaan yang Anda perlukan adalah memberikan ID unik (dengan atribut <a href="{@docRoot}guide/topics/resources/layout-resource.html#idvalue">{@code android:id}</a>
651682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns) untuk masing-masing widget yang ingin disimpan statusnya. Jika widget tidak memiliki ID, maka sistem
652682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnstidak bisa menyimpan statusnya.</p>
653682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns
654682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<div class="sidebox-wrapper">
655682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<div class="sidebox">
656682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<p>Anda juga bisa menghentikan secara eksplisit sebuah tampilan dalam layout Anda agar tidak menyimpan statusnya dengan mengatur atribut
657682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns{@link android.R.attr#saveEnabled android:saveEnabled} ke {@code "false"} atau dengan memanggil
658682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsmetode {@link android.view.View#setSaveEnabled setSaveEnabled()}. Biasanya, Anda tidak boleh
659menonaktifkannya, namun Anda boleh melakukannya jika ingin memulihkan status UI aktivitas secara berbeda.</p>
660</div>
661</div>
662
663<p>Walaupun implementasi default {@link
664android.app.Activity#onSaveInstanceState onSaveInstanceState()} menyimpan informasi yang berguna tentang
665UI aktivitas, Anda mungkin masih perlu mengesampingkannya untuk menyimpan informasi tambahan.
666Misalnya, Anda mungkin perlu menyimpan nilai-nilai anggota yang berubah selama masa pakai aktivitas (yang
667mungkin berkorelasi dengan nilai-nilai yang dipulihkan dalam UI, namun anggota-anggota yang menyimpan nilai-nilai UI itu tidak
668dipulihkan, secara default).</p>
669
670<p>Karena implementasi default {@link
671android.app.Activity#onSaveInstanceState onSaveInstanceState()} membantu menyimpan status UI, jika
672Anda mengesampingkan metode ini untuk menyimpan informasi tambahan status, Anda harus selalu memanggil
673implementasi superkelas {@link android.app.Activity#onSaveInstanceState onSaveInstanceState()}
674sebelum melakukan pekerjaan apa pun. Demikian pula, Anda juga harus memanggil implementasi superkelas {@link
675android.app.Activity#onRestoreInstanceState onRestoreInstanceState()} jika Anda mengesampingkannya, sehingga
676implementasi default bisa memulihkan status tampilan.</p>
677
678<p class="note"><strong>Catatan:</strong> Karena {@link android.app.Activity#onSaveInstanceState
679onSaveInstanceState()} tidak dijamin
680akan dipanggil, Anda harus menggunakannya hanya untuk mencatat status aktivitas sementara (transient) (status
681UI)&mdash;Anda tidak boleh menggunakannya untuk menyimpan data persisten.  Sebagai gantinya, Anda harus menggunakan {@link
682android.app.Activity#onPause onPause()} untuk menyimpan data persisten (misalnya data yang harus disimpan
683ke database) saat pengguna meninggalkan aktivitas.</p>
684
685<p>Salah satu cara yang baik untuk menguji kemampuan aplikasi dalam memulihkan statusnya adalah cukup dengan memutar
686perangkat sehingga orientasi layarnya berubah. Bila orientasi layar berubah, sistem
687akan memusnahkan dan membuat kembali aktivitas untuk menerapkan sumber daya alternatif yang mungkin tersedia
688untuk konfigurasi layar baru. Karena alasan ini saja, sangat penting bahwa aktivitas Anda
689memulihkan statusnya secara lengkap saat dibuat kembali, karena pengguna memutar layar secara rutin saat
690menggunakan aplikasi.</p>
691
692
693<h3 id="ConfigurationChanges">Menangani perubahan konfigurasi</h3>
694
695<p>Sebagian konfigurasi perangkat bisa berubah saat runtime (misalnya orientasi layar, ketersediaan keyboard
696, dan bahasa). Bila terjadi perubahan demikian, Android akan membuat kembali aktivitas yang berjalan
697(sistem akan memanggil {@link android.app.Activity#onDestroy}, kemudian segera memanggil {@link
698android.app.Activity#onCreate onCreate()}). Perilaku ini
699didesain untuk membantu aplikasi Anda menyesuaikan diri dengan konfigurasi baru dengan cara memuat ulang 
700aplikasi Anda secara otomatis dengan sumber daya alternatif yang telah Anda sediakan (misalnya layout yang berbeda untuk
701layar orientasi dan ukuran yang berbeda).</p>
702
703<p>Jika Anda mendesain aktivitas dengan benar untuk menangani restart karena perubahan orientasi layar dan
704memulihkan status aktivitas seperti yang dijelaskan di atas, aplikasi Anda akan lebih tahan terhadap
705kejadian tidak terduga lainnya dalam daur hidup aktivitas.</p>
706
707<p>Cara terbaik menangani restart tersebut adalah
708  menyimpan dan memulihkan status aktivitas Anda dengan menggunakan {@link
709  android.app.Activity#onSaveInstanceState onSaveInstanceState()} dan {@link
710android.app.Activity#onRestoreInstanceState onRestoreInstanceState()} (atau {@link
711android.app.Activity#onCreate onCreate()}), seperti yang dibahas di bagian sebelumnya.</p>
712
713<p>Untuk informasi selengkapnya tentang konfigurasi perubahan yang terjadi saat program berjalan dan cara menanganinya
714, bacalah panduan untuk <a href="{@docRoot}guide/topics/resources/runtime-changes.html">Menangani
715Perubahan Runtime</a>.</p>
716
717
718
719<h3 id="CoordinatingActivities">Mengoordinasikan aktivitas</h3>
720
721 <p>Bila suatu aktivitas memulai aktivitas lain, keduanya akan mengalami transisi daur hidup. Aktivitas pertama
722akan berhenti sementara dan berhenti sama sekali (walau tidak akan berhenti jika masih terlihat di latar belakang), saat
723aktivitas lain dibuat. Jika aktivitas-aktivitas ini berbagi data yang disimpan ke disk atau di tempat lain, Anda perlu
724memahami bahwa aktivitas pertama tidak dihentikan sepenuhnya sebelum aktivitas kedua dibuat.
725Sebagai gantinya, proses akan memulai aktivitas kedua secara tumpang tindih dengan proses penghentian 
726aktivitas pertama.</p>
727
728<p>Urutan callback daur hidup didefinisikan dengan baik, khususnya bila kedua aktivitas berada dalam
729proses yang sama dan salah satunya memulai yang lain. Berikut ini adalah urutan operasi yang terjadi bila Aktivitas
730A memulai Aktivitas B: </p>
731
732<ol>
733<li>Metode {@link android.app.Activity#onPause onPause()} Aktivitas A berjalan.</li>
734
735<li>Metode-metode {@link android.app.Activity#onCreate onCreate()}, {@link
736android.app.Activity#onStart onStart()}, dan {@link android.app.Activity#onResume onResume()}
737Aktivitas B berjalan secara berurutan. (Aktivitas B sekarang mendapatkan fokus pengguna.)</li>
738
739<li>Kemudian, jika Aktivitas A tidak lagi terlihat di layar, metode {@link
740android.app.Activity#onStop onStop()}-nya akan dijalankan.</li>
741</ol>
742
743 <p>Urutan callback daur hidup yang bisa diramalkan ini memungkinkan Anda mengelola transisi
744informasi dari satu aktivitas ke aktivitas lainnya. Misalnya, jika Anda harus menulis ke database saat
745aktivitas pertama berhenti agar aktivitas berikutnya bisa membacanya, maka Anda harus menulis ke
746database selama {@link android.app.Activity#onPause onPause()} sebagai ganti selama {@link
747android.app.Activity#onStop onStop()}.</p>
748
749<!--
750<h2>Beginner's Path</h2>
751
752<p>For more information about how Android maintains a history of activities and
753enables user multitasking, continue with the <b><a
754href="{@docRoot}guide/components/tasks-and-back-stack.html">Tasks and Back
755Stack</a></b> document.</p>
756-->
757