Saya telah bekerja pada platform Android SDK, dan sedikit tidak jelas bagaimana cara menyimpan status aplikasi. Jadi, mengingat tooling kecil contoh 'Hello, Android' ini:
package com.android.hello;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class HelloAndroid extends Activity {
private TextView mTextView = null;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mTextView = new TextView(this);
if (savedInstanceState == null) {
mTextView.setText("Welcome to HelloAndroid!");
} else {
mTextView.setText("Welcome back.");
}
setContentView(mTextView);
}
}
Saya pikir itu akan cukup untuk kasus yang paling sederhana, tetapi selalu merespon dengan pesan pertama, tidak peduli bagaimana saya menavigasi keluar dari aplikasi.
Saya yakin solusinya sesederhana mengganti onPause
atau semacamnya, tapi saya sudah mencari-cari di dokumentasi selama 30 menit atau lebih dan belum menemukan sesuatu yang jelas.
Jawaban:
Anda perlu mengganti
onSaveInstanceState(Bundle savedInstanceState)
dan menulis nilai status aplikasi yang ingin Anda ubah keBundle
parameter seperti ini:Bundle pada dasarnya adalah cara menyimpan peta NVP ("Pasangan Nama-Nilai"), dan itu akan diteruskan ke
onCreate()
dan juga dionRestoreInstanceState()
mana Anda kemudian akan mengekstrak nilai dari aktivitas seperti ini:Atau dari sebuah fragmen.
Anda biasanya akan menggunakan teknik ini untuk menyimpan nilai instance untuk aplikasi Anda (pilihan, teks yang belum disimpan, dll.).
sumber
onSaveInstanceState
hampir tidak berguna kecuali hanya untuk perubahan orientasi layar. Di hampir semua kasus lain, Anda tidak akan pernah bisa mengandalkannya dan perlu menyimpan keadaan UI secara manual di tempat lain. Atau mencegah aplikasi Anda terbunuh dengan mengabaikan perilaku tombol KEMBALI. Saya tidak mengerti mengapa mereka bahkan menerapkannya seperti ini sejak awal. Benar-benar tidak intuitif. Dan Anda tidak dapat memiliki Bundle yang diberikan sistem untuk menyelamatkan sesuatu kecuali dalam metode yang sangat khusus ini.View
id yang telah ditetapkan id . DarionSaveInstanceState
dokumen: "Implementasi default menangani sebagian besar keadaan UI per-instance untuk Anda dengan memanggilonSaveInstanceState()
setiap tampilan dalam hierarki yang memiliki id, dan dengan menyimpan id dari tampilan yang saat ini fokus (semuanya dipulihkan oleh implementasi default darionRestoreInstanceState(Bundle)
) "The
savedInstanceState
hanya untuk menyimpan negara terkait dengan contoh saat suatu kegiatan, misalnya navigasi saat ini atau info seleksi, sehingga jika Menghancurkan Android dan recreates suatu kegiatan, itu bisa kembali seperti sebelum. Lihat dokumentasi untukonCreate
danonSaveInstanceState
Untuk keadaan yang lebih lama, pertimbangkan untuk menggunakan database SQLite, file, atau preferensi. Lihat Menyimpan Status Tetap .
sumber
Perhatikan bahwa ini TIDAK aman untuk digunakan
onSaveInstanceState
danonRestoreInstanceState
untuk data yang persisten , menurut dokumentasi pada status Aktivitas di http://developer.android.com/reference/android/app/Activity.html .Dokumen menyatakan (di bagian 'Siklus Hidup Aktivitas'):
Dengan kata lain, masukkan kode save / restore Anda untuk data yang persisten
onPause()
danonResume()
!EDIT : Untuk klarifikasi lebih lanjut, inilah
onSaveInstanceState()
dokumentasinya:sumber
Rekan saya menulis sebuah artikel yang menjelaskan kondisi aplikasi pada perangkat Android termasuk penjelasan tentang aktivitas siklus hidup dan informasi negara, bagaimana untuk menyimpan informasi negara, dan menabung untuk negara
Bundle
danSharedPreferences
dan lihatlah disini .Artikel ini mencakup tiga pendekatan:
Menyimpan data kontrol variabel / UI lokal untuk masa aplikasi (yaitu sementara) menggunakan bundel keadaan instance
Menyimpan data kontrol variabel / UI lokal antara instance aplikasi (yaitu secara permanen) menggunakan preferensi bersama
Membuat instance objek tetap hidup di memori antara aktivitas dalam masa aplikasi menggunakan contoh non-konfigurasi yang dipertahankan
sumber
Ini adalah 'gotcha' klasik dari pengembangan Android. Ada dua masalah di sini:
Menjelajahi semua utas ini, saya curiga bahwa sebagian besar pengembang waktu membicarakan dua masalah berbeda ini secara bersamaan ... maka semua kebingungan dan laporan "ini tidak berhasil untuk saya".
Pertama, untuk mengklarifikasi perilaku 'yang dimaksudkan': onSaveInstance dan onRestoreInstance rapuh dan hanya untuk keadaan sementara. Penggunaan yang dimaksud (afaict) adalah untuk menangani rekreasi Aktivitas ketika ponsel diputar (perubahan orientasi). Dengan kata lain, penggunaan yang dimaksud adalah ketika Aktivitas Anda secara logis masih 'di atas', tetapi masih harus diperkuat kembali oleh sistem. Bundel yang disimpan tidak bertahan di luar proses / memori / gc, jadi Anda tidak dapat benar-benar mengandalkan ini jika aktivitas Anda mengarah ke latar belakang. Ya, mungkin memori Aktivitas Anda akan bertahan dalam perjalanannya ke latar belakang dan lolos dari GC, tetapi ini tidak dapat diandalkan (juga tidak dapat diprediksi).
Jadi, jika Anda memiliki skenario di mana ada 'kemajuan pengguna' yang berarti atau kondisi yang harus dipertahankan antara 'peluncuran' aplikasi Anda, panduannya adalah menggunakan onPause dan onResume. Anda harus memilih dan menyiapkan toko persisten sendiri.
TAPI - ada bug yang sangat membingungkan yang menyulitkan semua ini. Detail ada di sini:
http://code.google.com/p/android/issues/detail?id=2373
http://code.google.com/p/android/issues/detail?id=5277
Pada dasarnya, jika aplikasi Anda diluncurkan dengan bendera SingleTask, dan kemudian Anda meluncurkannya dari layar awal atau menu peluncur, maka pemanggilan berikutnya akan membuat tugas BARU ... Anda secara efektif akan memiliki dua contoh berbeda dari aplikasi Anda menghuni tumpukan yang sama ... yang menjadi sangat aneh sangat cepat. Ini tampaknya terjadi ketika Anda meluncurkan aplikasi selama pengembangan (yaitu dari Eclipse atau Intellij), sehingga pengembang sering mengalami hal ini. Tetapi juga melalui beberapa mekanisme pembaruan toko aplikasi (sehingga berdampak pada pengguna Anda juga).
Saya berjuang melalui utas ini selama berjam-jam sebelum saya menyadari bahwa masalah utama saya adalah bug ini, bukan perilaku kerangka yang dimaksud. Langgan yang bagus dan
solusi(PEMBARUAN: lihat di bawah) tampaknya berasal dari pengguna @kulaula dalam jawaban ini:Perilaku tombol tekan rumah
PEMBARUAN Juni 2013 : Beberapa bulan kemudian, saya akhirnya menemukan solusi 'benar'. Anda tidak perlu mengelola sendiri flag yang dimulaiApp stateful, Anda dapat mendeteksi ini dari kerangka kerja dan jaminan dengan tepat. Saya menggunakan ini di dekat awal LauncherActivity.onCreate saya:
sumber
onSaveInstanceState
dipanggil ketika sistem membutuhkan memori dan membunuh aplikasi. Itu tidak dipanggil ketika pengguna hanya menutup aplikasi. Jadi saya pikir negara aplikasi juga harus disimpan.onPause
Ini harus disimpan ke beberapa penyimpanan persisten sepertiPreferences
atauSqlite
sumber
Kedua metode ini bermanfaat dan valid dan keduanya paling cocok untuk skenario yang berbeda:
onSaveInstanceState()
danonRestoreInstanceState()
biasanya memadai.Jika Anda menyimpan data keadaan dengan cara yang terus-menerus, itu dapat dimuat ulang dalam
onResume()
atauonCreate()
(atau sebenarnya pada panggilan siklus hidup). Ini mungkin atau mungkin bukan perilaku yang diinginkan. Jika Anda menyimpannya dalam bundel dalamInstanceState
, maka itu bersifat sementara dan hanya cocok untuk menyimpan data untuk digunakan dalam 'sesi' pengguna yang sama (saya menggunakan istilah sesi secara longgar) tetapi tidak di antara 'sesi'.Bukannya satu pendekatan lebih baik dari yang lain, seperti segalanya, hanya penting untuk memahami perilaku apa yang Anda butuhkan dan memilih pendekatan yang paling tepat.
sumber
Menyimpan keadaan adalah kludge yang terbaik sejauh yang saya ketahui. Jika Anda perlu menyimpan data persisten, cukup gunakan database SQLite . Android membuatnya SOOO mudah.
Sesuatu seperti ini:
Panggilan sederhana setelah itu
sumber
Saya pikir saya menemukan jawabannya. Biarkan saya memberi tahu apa yang telah saya lakukan dengan kata-kata sederhana:
Misalkan saya memiliki dua aktivitas, activity1 dan activity2 dan saya menavigasi dari activity1 ke activity2 (saya telah melakukan beberapa pekerjaan di activity2) dan kembali lagi ke aktivitas 1 dengan mengklik tombol di activity1. Sekarang pada tahap ini saya ingin kembali ke aktivitas2 dan saya ingin melihat aktivitas2 saya dalam kondisi yang sama ketika saya terakhir meninggalkan aktivitas2.
Untuk skenario di atas apa yang telah saya lakukan adalah bahwa dalam manifes saya membuat beberapa perubahan seperti ini:
Dan di activity1 pada acara klik tombol yang telah saya lakukan seperti ini:
Dan pada activity2 pada event klik tombol yang telah saya lakukan seperti ini:
Sekarang apa yang akan terjadi adalah bahwa apa pun perubahan yang kita buat dalam aktivitas2 tidak akan hilang, dan kita dapat melihat aktivitas2 dalam keadaan yang sama seperti yang kita tinggalkan sebelumnya.
Saya percaya ini adalah jawabannya dan ini berfungsi dengan baik untuk saya. Koreksi saya jika saya salah.
sumber
onSaveInstanceState()
untuk data sementara (dikembalikan keonCreate()
/onRestoreInstanceState()
),onPause()
untuk data persisten (dikembalikan keonResume()
). Dari sumber daya teknis Android:sumber
Betulkah
onSaveInstanceState()
- dipanggil saat Kegiatan beralih ke latar belakang.Kutipan dari dokumen: "Metode ini dipanggil sebelum suatu aktivitas dapat dimatikan sehingga ketika kembali suatu saat nanti ia dapat memulihkan kondisinya." Sumber
sumber
Untuk membantu mengurangi boilerplate, saya menggunakan yang berikut ini
interface
danclass
untuk membaca / menulis keBundle
keadaan instance yang hemat.Pertama, buat antarmuka yang akan digunakan untuk membubuhi keterangan variabel instan Anda:
Lalu, buat kelas tempat refleksi akan digunakan untuk menyimpan nilai ke bundel:
Contoh penggunaan:
Catatan: Kode ini diadaptasi dari proyek perpustakaan bernama AndroidAutowire yang dilisensikan di bawah lisensi MIT .
sumber
Sementara itu saya secara umum tidak menggunakan lagi
Siklus hidup bagi kebanyakan kegiatan terlalu rumit dan tidak perlu.
Dan Google menyatakan sendiri, bahkan TIDAK dapat diandalkan.
Cara saya adalah segera menyimpan perubahan apa pun dalam preferensi:
Dalam beberapa hal, SharedPreferences berfungsi seperti halnya Bundel. Dan secara alami dan pada awalnya nilai-nilai tersebut harus dibaca dari preferensi.
Dalam hal data yang kompleks, Anda dapat menggunakan SQLite daripada menggunakan preferensi.
Saat menerapkan konsep ini, aktivitas hanya terus menggunakan status yang terakhir disimpan, terlepas dari apakah itu merupakan pembukaan awal dengan reboot di antara atau membuka kembali karena tumpukan belakang.
sumber
Untuk menjawab pertanyaan asli secara langsung. saveInstancestate adalah nol karena Aktivitas Anda tidak pernah dibuat ulang.
Aktivitas Anda hanya akan dibuat ulang dengan bundel status bila:
Android akan menghancurkan aktivitas latar belakang saat berada di bawah tekanan memori atau setelah mereka berada di latar untuk jangka waktu yang lama.
Ketika menguji halo dunia Anda, ada beberapa cara untuk pergi dan kembali ke Aktivitas.
Dalam kebanyakan kasus, jika Anda hanya menekan di rumah dan kemudian meluncurkan aplikasi lagi aktivitas tidak perlu dibuat kembali. Sudah ada di memori sehingga onCreate () tidak akan dipanggil.
Ada opsi di bawah Pengaturan -> Opsi Pengembang yang disebut "Jangan simpan aktivitas". Saat diaktifkan, Android akan selalu menghancurkan aktivitas dan membuatnya kembali ketika mereka dilatar belakangi. Ini adalah opsi yang bagus untuk dibiarkan aktif ketika berkembang karena ini mensimulasikan skenario terburuk. (Perangkat memori rendah mendaur ulang aktivitas Anda sepanjang waktu).
Jawaban lain sangat berharga karena mereka mengajarkan Anda cara yang benar untuk menyimpan keadaan tetapi saya tidak merasa mereka benar-benar menjawab MENGAPA kode Anda tidak berfungsi seperti yang Anda harapkan.
sumber
Metode
onSaveInstanceState(bundle)
danonRestoreInstanceState(bundle)
berguna untuk persistensi data hanya sambil memutar layar (perubahan orientasi).Mereka bahkan tidak baik saat beralih di antara aplikasi (karena
onSaveInstanceState()
metode ini dipanggil tetapionCreate(bundle)
danonRestoreInstanceState(bundle)
tidak dipanggil lagi.Untuk lebih gigih menggunakan preferensi bersama. Baca artikel ini
sumber
onCreate
danonRestoreInstanceState
tidak dipanggil karenaActivity
tidak dihancurkan sama sekali ketika Anda beralih aplikasi, jadi tidak perlu mengembalikan apa pun. Panggilan AndroidonSaveInstanceState
untuk berjaga-jaga jika Aktivitas dihancurkan kemudian (yang terjadi dengan kepastian 100% ketika memutar layar karena seluruh konfigurasi perangkat telah berubah dan Aktivitas harus dibuat ulang dari awal).Masalah saya adalah bahwa saya membutuhkan kegigihan hanya selama masa aplikasi (yaitu satu eksekusi termasuk memulai sub-kegiatan lainnya dalam aplikasi yang sama dan memutar perangkat, dll). Saya mencoba berbagai kombinasi jawaban di atas tetapi tidak mendapatkan apa yang saya inginkan dalam semua situasi. Pada akhirnya yang berhasil bagi saya adalah mendapatkan referensi ke saveInstanceState selama onCreate:
dan menggunakannya untuk mendapatkan isi dari variabel saya ketika saya membutuhkannya, di sepanjang baris:
Saya menggunakan
onSaveInstanceState
danonRestoreInstanceState
seperti yang disarankan di atas tetapi saya kira saya juga bisa atau sebagai alternatif menggunakan metode saya untuk menyimpan variabel ketika itu berubah (misalnya menggunakanputBoolean
)sumber
Meskipun jawaban yang diterima benar, ada metode yang lebih cepat dan lebih mudah untuk menyimpan status Aktivitas di Android menggunakan perpustakaan yang disebut Icepick . Icepick adalah prosesor anotasi yang menangani semua kode boilerplate yang digunakan untuk menyimpan dan memulihkan kondisi untuk Anda.
Melakukan sesuatu seperti ini dengan Icepick:
Sama dengan melakukan ini:
Icepick akan bekerja dengan objek apa pun yang menyimpan statusnya dengan a
Bundle
.sumber
Ketika suatu kegiatan dibuat itu metode onCreate () dipanggil.
SavedInstanceState adalah objek dari kelas Bundle yang null untuk pertama kalinya, tetapi berisi nilai saat dibuat ulang. Untuk menyimpan status Aktivitas Anda harus mengganti onSaveInstanceState ().
letakkan nilai Anda di objek Bundel "outState" seperti outState.putString ("kunci", "Selamat Datang Kembali") dan simpan dengan memanggil super. Ketika aktivitas akan dihancurkan, statusnya akan disimpan dalam objek Bundle dan dapat dikembalikan setelah rekreasi di onCreate () atau onRestoreInstanceState (). Bundel yang diterima di onCreate () dan onRestoreInstanceState () sama.
atau
sumber
Pada dasarnya ada dua cara untuk mengimplementasikan perubahan ini.
onSaveInstanceState()
danonRestoreInstanceState()
.android:configChanges="orientation|screenSize"
.Saya benar-benar tidak merekomendasikan untuk menggunakan metode kedua. Karena dalam salah satu pengalaman saya itu menyebabkan setengah dari layar perangkat hitam saat berputar dari potret ke lanskap dan sebaliknya.
Menggunakan metode pertama yang disebutkan di atas, kita dapat bertahan data ketika orientasi diubah atau perubahan konfigurasi terjadi. Saya tahu cara di mana Anda dapat menyimpan semua jenis data di dalam objek state saveInstance.
Contoh: Pertimbangkan kasus jika Anda ingin tetap objek Json. buat kelas model dengan getter dan setter.
Sekarang dalam aktivitas Anda di metode onCreate dan onSaveInstanceState lakukan hal berikut. Akan terlihat seperti ini:
sumber
Berikut adalah komentar dari jawaban Steve Moseley (oleh ToolmakerSteve ) yang menempatkan segala sesuatu ke dalam perspektif (secara keseluruhan onSaveInstanceState vs onPause, biaya timur vs saga biaya barat)
sumber
Kode Kotlin:
menyimpan:
dan kemudian di
onCreate()
atauonRestoreInstanceState()
Tambahkan nilai default jika Anda tidak ingin memiliki Opsional
sumber
Untuk mendapatkan data status aktivitas yang disimpan
onCreate()
, pertama-tama Anda harus menyimpan data di disimpanInstanceState denganSaveInstanceState(Bundle savedInstanceState)
metode utama .Ketika
SaveInstanceState(Bundle savedInstanceState)
metode aktivitas penghancuran dipanggil dan di sana Anda menyimpan data yang ingin Anda simpan. Dan Anda mendapatkan hal yang samaonCreate()
ketika aktivitas dimulai kembali. (SavedInstanceState tidak akan menjadi nol karena Anda telah menyimpan beberapa data di dalamnya sebelum aktivitas hancur)sumber
Sederhana cepat untuk menyelesaikan masalah ini adalah menggunakan IcePick
Pertama, atur perpustakaan di
app/build.gradle
Sekarang, mari kita periksa contoh di bawah ini bagaimana cara menyimpan status di Aktivitas
Ini berfungsi untuk Aktivitas, Fragmen atau objek apa pun yang perlu membuat serial keadaannya pada suatu Bundel (mis. ViewPresenters mortar)
Icepick juga dapat menghasilkan kode status instance untuk Tampilan kustom:
sumber
Tidak yakin apakah solusi saya tidak disukai atau tidak, tapi saya menggunakan layanan terikat untuk mempertahankan status ViewModel. Apakah Anda menyimpannya dalam memori dalam layanan atau bertahan dan mengambilnya dari database SQLite tergantung pada kebutuhan Anda. Ini adalah apa layanan rasa apa pun, mereka menyediakan layanan seperti mempertahankan status aplikasi dan logika bisnis umum abstrak.
Karena keterbatasan memori dan pemrosesan yang melekat pada perangkat seluler, saya memperlakukan tampilan Android dengan cara yang mirip dengan laman web. Halaman tidak mempertahankan keadaan, itu murni komponen lapisan presentasi yang hanya bertujuan untuk menyajikan keadaan aplikasi dan menerima input pengguna. Tren terbaru dalam arsitektur aplikasi web menggunakan pola Model, View, Controller (MVC) kuno, di mana halaman adalah View, data domain adalah model, dan pengontrol duduk di belakang layanan web. Pola yang sama dapat digunakan di Android dengan View sedang, well ... View, model adalah data domain Anda, dan Controller diimplementasikan sebagai layanan terikat Android. Kapan pun Anda ingin tampilan berinteraksi dengan controller, ikat padanya saat start / resume dan lepaskan saat stop / pause.
Pendekatan ini memberi Anda bonus tambahan untuk menegakkan prinsip desain Pemisahan Kepedulian karena Anda semua logika bisnis aplikasi dapat dipindahkan ke layanan Anda yang mengurangi duplikat logika di beberapa tampilan dan memungkinkan pandangan untuk menegakkan prinsip desain penting lainnya, Tanggung Jawab Tunggal.
sumber
Kotlin
Anda harus mengganti
onSaveInstanceState
danonRestoreInstanceState
menyimpan serta mengambil variabel yang ingin Anda persistenGrafik siklus hidup
Simpan variabel
Ambil variabel
sumber
Sekarang Android menyediakan ViewModels untuk menyimpan keadaan, Anda harus mencoba menggunakannya bukan saveInstanceState.
sumber
Ada cara untuk membuat Android menyelamatkan negara tanpa menerapkan metode apa pun. Cukup tambahkan baris ini ke pernyataan Manifest in Activity Anda:
Seharusnya terlihat seperti ini:
Di sini Anda dapat menemukan informasi lebih lanjut tentang properti ini.
Dianjurkan untuk membiarkan Android menangani ini untuk Anda daripada penanganan secara manual.
sumber
Apa yang harus disimpan dan yang tidak?
Pernah bertanya-tanya mengapa teks di dalam
EditText
disimpan secara otomatis saat orientasi berubah? Nah, jawaban ini untuk Anda.Ketika sebuah instance dari suatu Aktivitas dihancurkan dan Sistem menciptakan sebuah instance baru (misalnya, perubahan konfigurasi). Itu mencoba untuk membuatnya kembali menggunakan set data yang disimpan dari Aktivitas Aktivitas lama ( misalnya keadaan ).
Keadaan instance adalah kumpulan pasangan nilai kunci yang disimpan dalam
Bundle
objek.EditText
ListView
, dll.Jika Anda memerlukan variabel lain untuk disimpan sebagai bagian dari keadaan instance Anda harus OVERRIDE
onSavedInstanceState(Bundle savedinstaneState)
metode.Misalnya,
int currentScore
dalam GameActivityLebih detail tentang onSavedInstanceState (Bundle SavedinstaneState) saat menyimpan data
Yang mana yang harus dipilih untuk memulihkan status Aktivitas?
ATAU
Kedua metode mendapatkan objek Bundle yang sama, sehingga tidak masalah di mana Anda menulis logika pemulihan Anda. Satu-satunya perbedaan adalah bahwa dalam
onCreate(Bundle savedInstanceState)
metode Anda harus memberikan cek nol sementara itu tidak diperlukan dalam kasus terakhir. Jawaban lain sudah memiliki cuplikan kode. Anda bisa merujuk mereka.Lebih detail tentang onRestoreInstanceState (Bundle SavedinstaneState)
Bonus
Itu
onSaveInstanceState(Bundle savedInstanceState)
dipanggil oleh sistem hanya ketika pengguna berniat untuk kembali ke Aktivitas. Misalnya, Anda menggunakan App X dan tiba-tiba Anda mendapat panggilan. Anda pindah ke aplikasi pemanggil dan kembali ke aplikasi X. Dalam hal inionSaveInstanceState(Bundle savedInstanceState)
metode akan dipanggil.Tetapi pertimbangkan ini jika pengguna menekan tombol kembali. Diasumsikan bahwa pengguna tidak berniat untuk kembali ke Aktivitas, maka dalam hal ini
onSaveInstanceState(Bundle savedInstanceState)
tidak akan diminta oleh sistem. Poinnya adalah Anda harus mempertimbangkan semua skenario saat menyimpan data.Tautan yang relevan:
Demo tentang perilaku default
Dokumentasi Resmi Android .
sumber
Sekarang masuk akal untuk melakukan 2 cara dalam model tampilan. jika Anda ingin menyimpan yang pertama sebagai instance yang disimpan: Anda dapat menambahkan parameter status dalam model tampilan seperti ini https://developer.android.com/topic/libraries/architecture/viewmodel-savedstate#java
atau Anda dapat menyimpan variabel atau objek dalam model tampilan, dalam hal ini model tampilan akan menahan siklus hidup hingga aktivitas dihancurkan.
sumber
Anda dapat menggunakan
Live Data
danView Model
Untukifecycle Handel
Dari DariJetPack
. lihat Referensi ini:https://developer.android.com/topic/libraries/architecture/livedata
sumber