1. Selamat Datang
Pengantar
Dalam praktik ini, Anda akan mempelajari siklus proses aktivitas lebih lanjut. Siklus proses adalah kumpulan status aktivitas selama masa aktifnya, dari saat dibuat hingga dihancurkan dan sistem mengklaim kembali resource-nya. Saat pengguna membuka beberapa aktivitas di aplikasi (serta ke dalam dan ke luar aplikasi), aktivitas akan bertransisi di antara berbagai status dalam siklus prosesnya.
Setiap tahap dalam siklus proses aktivitas memiliki metode callback yang sesuai: onCreate()
, onStart()
, onPause()
, dan seterusnya. Saat sebuah aktivitas mengubah status, metode callback terkait akan dipanggil. Anda sudah melihat salah satu metode ini: onCreate()
. Dengan mengganti salah satu metode callback siklus proses di class Activity
, Anda dapat mengubah perilaku default aktivitas sebagai respons terhadap tindakan pengguna atau sistem.
Status aktivitas juga bisa berubah sebagai respons terhadap perubahan konfigurasi perangkat, misalnya saat pengguna memutar perangkat dari orientasi potret ke lanskap. Saat perubahan konfigurasi ini terjadi, aktivitas akan dihancurkan dan dibuat ulang dalam status default, dan pengguna mungkin kehilangan informasi yang telah dimasukkan dalam aktivitas. Agar pengguna tidak bingung, Anda perlu mengembangkan aplikasi guna mencegah kehilangan data yang tidak terduga. Nanti dalam praktik ini, Anda akan bereksperimen dengan perubahan konfigurasi dan mempelajari cara mempertahankan status aktivitas sebagai respons terhadap perubahan konfigurasi perangkat dan peristiwa siklus proses aktivitas lainnya.
Dalam praktik ini Anda menambahkan laporan logging ke aplikasi TwoActivities dan mengamati perubahan siklus proses aktivitas saat menggunakan aplikasi. Selanjutnya, Anda akan mulai menangani perubahan ini dan mempelajari cara menangani input pengguna dalam kondisi ini.
Yang harus sudah Anda ketahui
Anda harus sudah mampu:
- Membuat dan menjalankan project aplikasi di Android Studio.
- Menambahkan laporan log ke aplikasi Anda dan melihat log tersebut di panel Logcat.
- Memahami dan menggunakan
Activity
danIntent
, serta memahami cara berinteraksi dengannya.
Yang akan Anda pelajari
- Cara kerja siklus proses
Activity
. - Saat
Activity
dimulai, dijeda, dihentikan, dan dihancurkan. - Tentang metode callback siklus proses yang terkait dengan perubahan
Activity
. - Efek tindakan (seperti perubahan konfigurasi) yang dapat menghasilkan peristiwa siklus proses
Activity
. - Cara mempertahankan status
Activity
di seluruh peristiwa siklus proses.
Yang akan Anda lakukan
- Menambahkan kode ke aplikasi TwoActivities dari praktik sebelumnya untuk menerapkan berbagai callback siklus proses
Activity
guna menyertakan laporan logging. - Mengamati perubahan status saat aplikasi berjalan dan saat Anda berinteraksi dengan setiap
Activity
di aplikasi. - Memodifikasi aplikasi untuk mempertahankan status instance
Activity
yang tanpa terduga dibuat ulang sebagai respons terhadap perilaku pengguna atau perubahan konfigurasi pada perangkat.
2. Ringkasan aplikasi
Dalam praktik ini, Anda akan menambahkan aplikasi TwoActivities. Tampilan dan perilaku aplikasi ini kurang lebih sama seperti yang ada di codelab terakhir. Aplikasi ini berisi dua implementasi Activity
dan memberi pengguna kemampuan untuk mengirim di antara keduanya. Perubahan yang Anda buat pada aplikasi dalam praktik ini tidak akan memengaruhi perilaku pengguna yang terlihat.
3. Tugas 1. Menambahkan callback siklus proses ke TwoActivities
Dalam tugas ini Anda akan mengimplementasikan semua metode callback siklus proses Activity
untuk mencetak pesan ke logcat saat metode itu dipanggil. Pesan log ini akan memungkinkan Anda melihat kapan siklus proses Activity
mengubah status, dan bagaimana perubahan status siklus proses tersebut memengaruhi aplikasi Anda saat aplikasi berjalan.
1.1 (Opsional) Menyalin Project TwoActivities
Untuk tugas dalam praktik ini, Anda akan memodifikasi project TwoActivities yang sudah ada, yang dibuat pada praktik sebelumnya. Jika Anda ingin mempertahankan project TwoActivities sebelumnya, ikuti langkah-langkah di Lampiran: Utilitas untuk membuat salinan project.
1.2 Mengimplementasikan callback ke MainActivity
- Buka project TwoActivities di Android Studio, dan buka MainActivity di panel Project > Android.
- Dalam metode
onCreate()
, tambahkan laporan log berikut:
Log.d(LOG_TAG, "-------");
Log.d(LOG_TAG, "onCreate");
- Tambahkan penggantian untuk callback
onStart()
, dengan pernyataan ke log untuk peristiwa tersebut:
@Override
public void onStart(){
super.onStart();
Log.d(LOG_TAG, "onStart");
}
Untuk pintasan, pilih Code > Override Methods di Android Studio. Dialog muncul dengan semua metode yang mungkin dan bisa Anda gantikan dalam kelas. Memilih satu atau beberapa metode callback dari daftar akan menyisipkan template lengkap untuk metode tersebut, termasuk panggilan wajib ke superclass.
- Gunakan metode
onStart()
sebagai template untuk menerapkan callback siklus prosesonPause()
,onRestart()
,onResume()
,onStop()
, danonDestroy()
.
Semua metode callback memiliki tanda tangan yang sama (kecuali untuk nama). Jika Anda Menyalin dan Menempel onStart()
untuk membuat metode callback lain, jangan lupa untuk memperbarui kontennya agar memanggil metode yang tepat dalam superclass, dan mencatat log metode yang benar.
- Jalankan aplikasi Anda.
- Klik tab Logcat di bagian bawah Android Studio untuk menampilkan panel Logcat. Anda akan melihat tiga pesan log yang menunjukkan tiga status siklus proses yang dipindah oleh
Activity
saat dimulai:
D/MainActivity: ------- D/MainActivity: onCreate D/MainActivity: onStart D/MainActivity: onResume
1.3 Mengimplementasikan callback siklus proses dalam SecondActivity
Setelah Anda mengimplementasikan metode callback siklus proses untuk MainActivity
, lakukan hal yang sama untuk SecondActivity
.
- Buka SecondActivity.
- Di bagian atas class, tambahkan konstanta untuk variabel
LOG_TAG
:
private static final String LOG_TAG = SecondActivity.class.getSimpleName();
- Tambahkan callback siklus proses dan laporan log ke
Activity
kedua. (Anda dapat Menyalin dan Menempelkan metode callback dariMainActivity
.) - Tambahkan laporan log ke metode
returnReply()
tepat sebelum metodefinish()
:
Log.d(LOG_TAG, "End SecondActivity");
1.4 Mengamati log saat aplikasi berjalan
- Jalankan aplikasi Anda.
- Klik tab Logcat di bagian bawah Android Studio untuk menampilkan panel Logcat.
- Masukkan Activity di kotak penelusuran. Logcat Android bisa menjadi sangat panjang dan berantakan. Karena variabel
LOG_TAG
di setiap class berisi kataMainActivity
atauSecondActivity
, kata kunci ini memungkinkan Anda memfilter log hanya untuk hal-hal yang Anda fokuskan.
Lakukan eksperimen dengan aplikasi dan perhatikan bahwa peristiwa siklus proses terjadi sebagai respons terhadap berbagai tindakan. Khususnya, coba hal-hal berikut ini:
- Gunakan aplikasi dengan normal (mengirim pesan, membalas dengan pesan lain).
- Gunakan tombol Kembali untuk kembali dari
Activity
kedua keActivity
utama. - Gunakan Panah atas di panel aplikasi untuk kembali dari
Activity
kedua keActivity
utama. - Putar perangkat di
Activity
utama dan kedua pada waktu yang berbeda di aplikasi dan amati apa yang terjadi di log dan di layar. - Tekan tombol ringkasan (tombol kotak di sebelah kanan Layar Utama) dan tutup aplikasi (ketuk X).
- Kembali ke layar utama dan mulai ulang aplikasi Anda.
TIPS: Jika menjalankan aplikasi di emulator, Anda dapat menyimulasikan rotasi dengan Control+F11
atau Control+Function+F11
.
Kode solusi Tugas 1
Cuplikan kode berikut menunjukkan kode solusi untuk tugas pertama.
MainActivity
Cuplikan kode berikut menunjukkan kode yang ditambahkan di MainActivity
, tetapi tidak di seluruh class.
Metode onCreate()
:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Log the start of the onCreate() method.
Log.d(LOG_TAG, "-------");
Log.d(LOG_TAG, "onCreate");
// Initialize all the view variables.
mMessageEditText = findViewById(R.id.editText_main);
mReplyHeadTextView = findViewById(R.id.text_header_reply);
mReplyTextView = findViewById(R.id.text_message_reply);
}
Metode siklus proses lainnya:
@Override
protected void onStart() {
super.onStart();
Log.d(LOG_TAG, "onStart");
}
@Override
protected void onPause() {
super.onPause();
Log.d(LOG_TAG, "onPause");
}
@Override
protected void onRestart() {
super.onRestart();
Log.d(LOG_TAG, "onRestart");
}
@Override
protected void onResume() {
super.onResume();
Log.d(LOG_TAG, "onResume");
}
@Override
protected void onStop() {
super.onStop();
Log.d(LOG_TAG, "onStop");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.d(LOG_TAG, "onDestroy");
}
SecondActivity
Cuplikan kode berikut menunjukkan kode yang ditambahkan di SecondActivity
, tetapi tidak di seluruh class.
Di bagian atas class SecondActivity
:
private static final String LOG_TAG = SecondActivity.class.getSimpleName();
Metode returnReply()
:
public void returnReply(View view) {
String reply = mReply.getText().toString();
Intent replyIntent = new Intent();
replyIntent.putExtra(EXTRA_REPLY, reply);
setResult(RESULT_OK, replyIntent);
Log.d(LOG_TAG, "End SecondActivity");
finish();
}
Metode siklus proses lainnya:
Sama seperti MainActivity
, di atas.
4. Tugas 2. Menyimpan dan memulihkan status instance Aktivitas.
Bergantung pada resource sistem dan perilaku pengguna, setiap Activity
dalam aplikasi Anda dapat dimusnahkan dan dibuat ulang jauh lebih sering dari yang Anda pikirkan.
Anda mungkin melihat perilaku ini di bagian terakhir saat memutar perangkat atau emulator. Memutar perangkat adalah salah satu contoh perubahan konfigurasi perangkat. Walaupun rotasi adalah yang paling umum, semua hasil perubahan konfigurasi mengakibatkan Activity
saat ini dimusnahkan dan dibuat ulang seperti baru. Jika Anda tidak mempertimbangkan perilaku ini dalam kode, saat perubahan konfigurasi terjadi, tata letak Activity
mungkin akan kembali ke tampilan default dan nilai awalnya, dan pengguna Anda bisa kehilangan tempat, data, atau status progresnya di aplikasi Anda.
Status setiap Activity
disimpan sebagai kumpulan key-value pair dalam objek Bundle
yang disebut status instance Activity
. Sistem menyimpan informasi status default ke status instance Bundle
tepat sebelum Activity
dihentikan, dan meneruskan Bundle
tersebut ke instance Activity
baru untuk dipulihkan.
Agar Activity
tidak kehilangan data saat data dihancurkan dan dibuat ulang secara tidak terduga, Anda harus mengimplementasikan metode onSaveInstanceState()
. Sistem memanggil metode ini di Activity
(antara onPause()
dan onStop()
) jika ada kemungkinan Activity
dimusnahkan dan dibuat ulang.
Data yang disimpan pada status instance hanya ditujukan untuk instance Activity
spesifik ini saja selama sesi aplikasi saat ini. Saat Anda menghentikan dan memulai ulang sesi aplikasi baru, status instance Activity
hilang dan Activity
kembali ke tampilan default-nya. Jika Anda perlu menyimpan data pengguna antar sesi aplikasi, gunakan database atau preferensi bersama. Anda akan mempelajari keduanya dalam praktik berikutnya.
2.1 Menyimpan status instance Aktivitas dengan onSaveInstanceState()
Anda mungkin telah memperhatikan bahwa memutar perangkat tidak memengaruhi status Activity
kedua sama sekali. Hal ini karena tata letak dan status Activity
kedua dihasilkan dari tata letak dan Intent
yang mengaktifkannya. Meskipun Activity
dibuat ulang, Intent
masih ada dan data dalam Intent
tersebut masih digunakan setiap kali metode onCreate()
di Activity
kedua dipanggil.
Selain itu, Anda mungkin melihat bahwa di setiap Activity
, setiap teks yang Anda ketik ke dalam elemen pesan atau balasan EditText
akan dipertahankan meskipun perangkat diputar. Ini karena informasi status beberapa elemen View
dalam tata letak secara otomatis disimpan di semua perubahan konfigurasi, dan nilai saat ini dari EditText
adalah salah satu contohnya.
Jadi, satu-satunya status Activity
yang menjadi fokus Anda adalah elemen TextView
untuk header balasan dan teks balasan di Activity
utama. Kedua elemen TextView
tidak terlihat secara default, tetapi hanya muncul setelah Anda mengirim pesan kembali ke Activity
utama dari Activity
kedua.
Dalam tugas ini, Anda menambahkan kode untuk mempertahankan status instance kedua elemen TextView
ini menggunakan onSaveInstanceState()
.
- Buka MainActivity.
- Tambahkan implementasi kerangka
onSaveInstanceState()
ini keActivity
, atau gunakan Code > Override Methods untuk menyisipkan penggantian kerangka.
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
}
- Periksa untuk melihat apakah header saat ini terlihat, dan jika demikian, masukkan status visibilitas tersebut ke
Bundle
status dengan metodeputBoolean()
dan kunci"reply_visible"
.
if (mReplyHeadTextView.getVisibility() == View.VISIBLE) {
outState.putBoolean("reply_visible", true);
}
Ingat bahwa header dan teks balasan ditandai sebagai tidak terlihat sampai ada balasan dari Activity
kedua. Jika header terlihat, maka ada data balasan yang perlu disimpan. Perhatikan bahwa kita hanya berfokus pada status visibilitas tersebut — teks header sebenarnya tidak perlu disimpan, karena teks tersebut tidak pernah berubah.
- Dalam pemeriksaan yang sama, tambahkan teks balasan ke dalam
Bundle
.
outState.putString("reply_text",mReplyTextView.getText().toString());
Jika header terlihat Anda bisa mengasumsikan bahwa pesan balasan juga terlihat. Anda tidak perlu menguji atau menyimpan status visibilitas pesan balasan saat ini. Hanya teks sebenarnya dari pesan yang masuk ke Bundle
status dengan kunci "reply_text"
.
Anda hanya harus menyimpan status dari elemen View
, yang mungkin berubah setelah Activity
dibuat. Elemen View
lainnya di aplikasi (EditText
, Button
) dapat dibuat ulang dari tata letak default kapan saja.
Perhatikan bahwa sistem akan menyimpan status beberapa elemen View
, seperti konten EditText
.
2.2. Memulihkan status instance Aktivitas di onCreate()
Setelah menyimpan status instance Activity
, Anda juga harus memulihkannya saat Activity
dibuat ulang. Anda dapat melakukannya di onCreate()
, atau dengan menerapkan callback onRestoreInstanceState()
, yang dipanggil setelah onStart()
setelah Activity
dibuat.
Biasanya, tempat terbaik untuk memulihkan status Activity
adalah di onCreate()
, untuk memastikan bahwa UI, termasuk statusnya, tersedia sesegera mungkin. Kadang lebih nyaman melakukannya dalam onRestoreInstanceState()
setelah semua inisialisasi dilakukan, atau mengizinkan subclass memutuskan apakah akan menggunakan implementasi default Anda.
- Dalam metode
onCreate()
, setelah variabelView
diinisialisasi denganfindViewById()
, tambahkan pengujian untuk memastikan bahwasavedInstanceState
bukan null.
// Initialize all the view variables.
mMessageEditText = findViewById(R.id.editText_main);
mReplyHeadTextView = findViewById(R.id.text_header_reply);
mReplyTextView = findViewById(R.id.text_message_reply);
// Restore the state.
if (savedInstanceState != null) {
}
Saat Activity
dibuat, sistem akan meneruskan Bundle
status ke onCreate()
sebagai satu-satunya argumen. Saat onCreate()
pertama kali dipanggil dan aplikasi Anda dimulai, Bundle
adalah null
—tidak ada status saat pertama kali aplikasi dimulai. Panggilan berikutnya ke onCreate()
memiliki paket yang diisi dengan data yang Anda simpan di onSaveInstanceState()
.
- Di dalam pemeriksaan tersebut, dapatkan visibilitas saat ini (benar atau salah) dari
Bundle
dengan kunci"reply_visible"
.
if (savedInstanceState != null) {
boolean isVisible =
savedInstanceState.getBoolean("reply_visible");
}
- Tambahkan pengujian di bawah baris sebelumnya untuk variabel isVisible.
if (isVisible) {
}
Jika ada kunci reply_visible
dalam Bundle
status (sehingga isVisible
adalah true
), Anda harus memulihkan statusnya.
- Di dalam pengujian
isVisible
, buat header-nya terlihat.
mReplyHeadTextView.setVisibility(View.VISIBLE);
- Dapatkan pesan balasan teks dari
Bundle
dengan kunci"reply_text"
, dan setelTextView
balasan untuk menampilkan string tersebut.
mReplyTextView.setText(savedInstanceState.getString("reply_text"));
- Buat balasan
TextView
juga terlihat:
mReplyTextView.setVisibility(View.VISIBLE);
- Jalankan aplikasi. Coba putar perangkat atau emulator untuk memastikan bahwa pesan balasan (jika ada) tetap berada di layar setelah
Activity
dibuat ulang.
Kode solusi Tugas 2
Cuplikan kode berikut menunjukkan kode solusi untuk tugas ini.
MainActivity
Cuplikan kode berikut menunjukkan kode yang ditambahkan di MainActivity
, tetapi tidak di seluruh class.
Metode onSaveInstanceState()
:
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
// If the heading is visible, message needs to be saved.
// Otherwise we're still using default layout.
if (mReplyHeadTextView.getVisibility() == View.VISIBLE) {
outState.putBoolean("reply_visible", true);
outState.putString("reply_text",
mReplyTextView.getText().toString());
}
}
Metode onCreate()
:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d(LOG_TAG, "-------");
Log.d(LOG_TAG, "onCreate");
// Initialize all the view variables.
mMessageEditText = findViewById(R.id.editText_main);
mReplyHeadTextView = findViewById(R.id.text_header_reply);
mReplyTextView = findViewById(R.id.text_message_reply);
// Restore the saved state.
// See onSaveInstanceState() for what gets saved.
if (savedInstanceState != null) {
boolean isVisible =
savedInstanceState.getBoolean("reply_visible");
// Show both the header and the message views. If isVisible is
// false or missing from the bundle, use the default layout.
if (isVisible) {
mReplyHeadTextView.setVisibility(View.VISIBLE);
mReplyTextView.setText(savedInstanceState
.getString("reply_text"));
mReplyTextView.setVisibility(View.VISIBLE);
}
}
}
Project yang selesai:
Project Android Studio: TwoActivitiesLifecycle
5. Tantangan coding
Tantangan: Membuat aplikasi daftar belanja sederhana dengan aktivitas utama untuk daftar yang dibuat pengguna, dan aktivitas kedua untuk daftar item belanja umum.
- Aktivitas utama harus berisi daftar yang akan di-build, yang harus terdiri dari sepuluh elemen
TextView
kosong. - Tombol Add Item di aktivitas utama akan meluncurkan aktivitas kedua yang berisi daftar item belanja umum (Cheese, Rice, Apples, dan sebagainya). Gunakan elemen
Button
untuk menampilkan item. - Memilih item akan mengembalikan pengguna ke aktivitas utama, dan memperbarui
TextView
kosong untuk menyertakan item yang dipilih.
Gunakan Intent
untuk meneruskan informasi dari satu Activity
ke yang lain. Pastikan status daftar belanja saat ini disimpan saat pengguna memutar perangkat.
6. Ringkasan
- Siklus proses Aktivitas adalah kumpulan status yang dimigrasikan oleh
Activity
, dimulai saat pertama kali dibuat dan berakhir saat sistem Android mengklaim kembali resource untukActivity
tersebut. - Saat pengguna beralih dari satu
Activity
ke yang lain, serta di dalam dan di luar aplikasi, setiapActivity
akan berpindah antar-status di siklus prosesActivity
. - Setiap status dalam siklus proses
Activity
memiliki metode callback yang sesuai dan dapat Anda ganti di classActivity
. - Metode siklus proses adalah
onCreate()
,onStart()
,onPause()
,onRestart()
,onResume()
,onStop()
,onDestroy()
. - Mengganti metode callback siklus proses mengizinkan Anda menambahkan perilaku yang terjadi saat
Activity
bertransisi ke status tersebut. - Anda dapat menambahkan metode pengganti kerangka ke class dalam Android Studio dengan Code > Override.
- Perubahan konfigurasi perangkat seperti hasil putaran dalam
Activity
dimusnahkan dan dibuat ulang seperti baru. - Sebagian status
Activity
dipertahankan pada perubahan konfigurasi, termasuk nilai elemenEditText
saat ini. Untuk semua data lainnya, Anda harus secara eksplisit menyimpan data sendiri. - Simpan status instance
Activity
dalam metodeonSaveInstanceState()
. - Data status instance disimpan sebagai key-value pair dalam
Bundle
. Gunakan metodeBundle
untuk memasukkan data dan mendapatkan data kembali dariBundle
. - Pulihkan status instance di
onCreate()
, yang merupakan cara yang direkomendasikan, atauonRestoreInstanceState()
.
7. Konsep terkait
Dokumentasi konsep terkait ada di 2.2: Siklus proses dan status Aktivitas.
8. Mempelajari lebih lanjut
Dokumentasi Android Studio:
Dokumentasi developer Android:
9. Pekerjaan Rumah
Bagian ini mencantumkan kemungkinan tugas pekerjaan rumah untuk siswa yang mengerjakan codelab ini sebagai bagian dari kursus yang dipimpin oleh instruktur. Instruktur menentukan hal berikut:
- Memberikan pekerjaan rumah jika diperlukan.
- Memberi tahu siswa cara mengirimkan tugas pekerjaan rumah.
- Memberi nilai tugas pekerjaan rumah.
Instruktur bisa menggunakan saran ini sesuai kebutuhan, dan bebas menugaskan pekerjaan rumah lain yang dirasa cocok.
Jika Anda menyelesaikan codelab ini sendiri, gunakan tugas pekerjaan rumah ini untuk menguji pengetahuan Anda.
Membangun dan menjalankan aplikasi
- Buat aplikasi dengan tata letak yang berisi penghitung
TextView
,Button
untuk menambahkan penghitung, danEditText
. Lihat screenshot di bawah sebagai contoh. Anda tidak harus membuat duplikat tata letak secara persis. - Tambahkan pengendali klik untuk
Button
yang menambahkan penghitung. - Jalankan aplikasi dan tambahkan penghitung. Masukkan beberapa teks ke dalam
EditText
. - Putar perangkat. Perhatikan bahwa penghitung direset, tetapi
EditText
tidak. - Implementasikan
onSaveInstanceState()
untuk menyimpan status aplikasi saat ini. - Perbarui
onCreate()
untuk memulihkan status aplikasi. - Pastikan bahwa saat Anda memutar perangkat, status aplikasi tetap dipertahankan.
Jawab pertanyaan-pertanyaan berikut
Pertanyaan 1
Jika Anda menjalankan aplikasi pekerjaan rumah sebelum menerapkan onSaveInstanceState()
, apa yang terjadi jika Anda memutar perangkat? Pilih satu:
EditText
tidak lagi berisi teks yang Anda masukkan, tetapi penghitung dipertahankan.- Penghitung direset ke 0 dan
EditText
tidak lagi berisi teks yang Anda masukkan. - Penghitung direset ke 0, tetapi konten
EditText
dipertahankan. - Penghitung dan konten
EditText
dipertahankan.
Pertanyaan 2
Apa metode siklus proses Activity
yang dipanggil ketika perubahan konfigurasi-perangkat (seperti rotasi) terjadi? Pilih satu:
- Android langsung mematikan
Activity
dengan memanggilonStop()
. Kode Anda harus memulai ulangActivity
. - Android mematikan
Activity
dengan memanggilonPause()
,onStop()
, danonDestroy()
. Kode Anda harus memulai ulangActivity
. - Android mematikan
Activity
dengan memanggilonPause()
,onStop()
, danonDestroy()
, lalu memulai lagi dari awal, memanggilonCreate()
,onStart()
, danonResume()
. - Android langsung memanggil
onResume()
.
Pertanyaan 3
Kapan siklus proses Activity
dipanggil onSaveInstanceState()
? Pilih satu:
onSaveInstanceState()
dipanggil sebelum metodeonStop()
.onSaveInstanceState()
dipanggil sebelum metodeonResume()
.onSaveInstanceState()
dipanggil sebelum metodeonCreate()
.onSaveInstanceState()
dipanggil sebelum metodeonDestroy()
.
Pertanyaan 4
Metode siklus proses Activity
mana yang paling baik digunakan untuk menyimpan data sebelum Activity
selesai atau dihancurkan? Pilih satu:
onPause()
atauonStop()
onResume()
atauonCreate()
onDestroy()
onStart()
atauonRestart()
Mengirimkan aplikasi Anda untuk dinilai
Panduan untuk penilai
Pastikan aplikasi memiliki beberapa fitur berikut:
- Aplikasi menampilkan penghitung,
Button
untuk menambah penghitung tersebut, danEditText
. - Mengklik
Button
akan menambahkan penghitung sebesar 1. - Saat perangkat diputar, penghitung dan status
EditText
dipertahankan. - Implementasi
MainActivity.java
menggunakan metodeonSaveInstanceState()
untuk menyimpan nilai penghitung. - Implementasi pengujian
onCreate()
untuk eksistensioutState
Bundle
. JikaBundle
tersebut ada, nilai penghitung akan dipulihkan dan disimpan keTextView
.
10. Codelab berikutnya
Untuk menemukan codelab praktik berikutnya dalam kursus Dasar-Dasar Android Developer (V2), lihat Codelabs untuk Dasar-Dasar Android Developer (V2).
Untuk ringkasan kursus, termasuk link ke bab, aplikasi, dan slide konsep, lihat Dasar-Dasar Android Developer (Versi 2).