2.2: Siklus Hidup Aktivitas dan Status Instance

Tugas 1. Menambahkan Callback Siklus Hidup ke TwoActivities

1.2 Mengimplementasikan callback ke MainActivity

  1. Buka java/com.example.android.twoactivities/MainActivity.
  2. Dalam metode onCreate(), tambahkan pernyataan log berikut:
    Log.d(LOG_TAG, "-------");
    Log.d(LOG_TAG, "onCreate");
  3. Tambahkan metode baru untuk callback onStart(), dengan pernyataan ke log untuk peristiwa tersebut:

    @Override
    public void onStart(){
        super.onStart();
        Log.d(LOG_TAG, "onStart");
    }

    Gunakan metode onStart() sebagai template untuk mengimplementasikan callback siklus hidup lainnya:

    • onPause()
    • onRestart()
    • onResume()
    • onStop()
    • onDestroy()
  4. Bangun dan jalankan aplikasi Anda.

1.3 Mengimplementasikan callback siklus hidup dalam SecondActivity

  1. Buka java/com.example.android.twoactivities/SecondActivity.
  2. Di bagian atas kelas, tambahkan konstanta untuk variabel LOG_TAG:
    private static final String LOG_TAG =
         SecondActivity.class.getSimpleName();
    
  3. Tambahkan callback siklus hidup dan pernyataan log ke aktivitas kedua. (Anda juga bisa menyalin dan menempel metode callback dari MainActivity)
  4. Tambahkan pernyataan log ke metode returnReply(), tepat sebelum metode finish():
    Log.d(LOG_TAG, "End SecondActivity");

    1.4 Amati log saat aplikasi berjalan

    1. Jalankan aplikasi Anda.
    2. Klik Android Monitor di bawah Android Studio untuk membuka Android Monitor.
    3. Pilih tab logcat.
    4. Ketik “Activity” dalam kotak pencarian Android Monitor.

      Logcat Android bisa menjadi sangat panjang dan berantakan. Karena variabel LOG_TAG di setiap kelas berisi kata MainActivity atau SecondActivity, kata kunci ini memungkinkan Anda memfilter log hanya untuk hal-hal yang Anda minati.

Tugas 2. Menyimpan dan memulihkan status instance aktivitas.

2.1 Simpan status instance aktivitas dengan onSaveInstanceState()

  1. Buka java/com.example.android.twoactivities/MainActivity.
  2. Tambahkan implementasi skeleton onSaveInstanceState() ke aktivitas, atau gunakan Code > Override Methods untuk menyisipkan pengganti kerangka.
    @Override
    public void onSaveInstanceState(Bundle outState) {
         super.onSaveInstanceState(outState);
    }

Periksa untuk melihat apakah header saat ini terlihat, dan jika demikian letakkan status visibilitas ke dalam bundel status dengan metode putBoolean() dan kunci “reply_visible”.

if (mReplyHeadTextView.getVisibility() == View.VISIBLE) {
    outState.putBoolean("reply_visible", true);
}

 

Dalam pemeriksaan yang sama, tambahkan teks balasan ke dalam bundel.

outState.putString("reply_text", mReplyTextView.getText().toString());

 

2.2. Memulihkan status instance aktivitas dalam onCreate()

Dalam metode onCreate(), tambahkan tes untuk memastikan bundelnya tidak null.

if (savedInstanceState != null) {
}
  1. Dalam pemeriksaan tersebut, dapatkan visibilitas saat ini (benar atau salah) dari bundel dengan kunci “reply_visible”
    if (savedInstanceState != null) {
        boolean isVisible =
        savedInstanceState.getBoolean("reply_visible");
    }
    
  2. Tambahkan tes di bawah baris sebelumnya untuk variabel isVisible.

    if (isVisible) {
    }
    

    Jika ada kunci reply_visible” dalam bundel status (maka isVisible benar), kita perlu memulihkan statusnya.

  3. Dalam tes isVisible, buat header-nya terlihat.
    mReplyHeadTextView.setVisibility(View.VISIBLE);
    
  4. Dapatkan pesan balasan teks dari bundel dengan kunci “reply_text”, dan setel TextView balasan untuk menunjukkan string tersebut.
    mReplyTextView.setText(savedInstanceState.getString("reply_text"));
    
  5. Jadikan TextView balasan terlihat juga:
    mReplyTextView.setVisibility(View.VISIBLE);
    
    

Jalankan aplikasi. Coba putar perangkat atau emulator untuk memastikan bahwa pesan balasan (jika ada) tetap ada di layar setelah aktivitas dibuat ulang.

 

Leave a Reply

Your email address will not be published. Required fields are marked *