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—apakah sistem sedang membuatnya, menghentikannya, melanjutkannya, atau menghapuskannya—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—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 <activity>}</a> 143682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnssebagai anak elemen <a href="{@docRoot}guide/topics/manifest/application-element.html">{@code <application>}</a> 144682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns. Misalnya:</p> 145682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns 146682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<pre> 147682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<manifest ... > 148682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns <application ... > 149682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns <activity android:name=".ExampleActivity" /> 150682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns ... 151682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns </application ... > 152682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns ... 153682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns</manifest > 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—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 <activity>}</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<activity>}</a> juga bisa menetapkan berbagai filter intent—dengan menggunakan elemen <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code 172682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<intent-filter>}</a> —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<activity android:name=".ExampleActivity" android:icon="@drawable/app_icon"> 182682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns <intent-filter> 183682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns <action android:name="android.intent.action.MAIN" /> 184682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns <category android:name="android.intent.category.LAUNCHER" /> 185682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns </intent-filter> 186682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns</activity> 187682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns</pre> 188682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns 189682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<p>Elemen <a href="{@docRoot}guide/topics/manifest/action-element.html">{@code 190682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<action>}</a> menetapkan bahwa ini adalah titik masuk "main" ke aplikasi. Elemen <a href="{@docRoot}guide/topics/manifest/category-element.html">{@code 191682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<category>}</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<intent-filter>}</a> yang menyertakan elemen 204682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<a href="{@docRoot}guide/topics/manifest/action-element.html">{@code 205682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<action>}</a> dan, opsional, sebuah elemen <a href="{@docRoot}guide/topics/manifest/category-element.html">{@code 206682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<category>}</a> dan/atau elemen <a href="{@docRoot}guide/topics/manifest/data-element.html">{@code 207682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns<data>}</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—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@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 && 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—jika ya, maka 302682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns {@code resultCode} akan berupa {@link android.app.Activity#RESULT_OK}—dan apakah permintaan 303682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johnsyang direspons hasil ini dikenal—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 @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 @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 @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 @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 @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 @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—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 — 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;"> </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;"> </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—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—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—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)—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