Gambar berikut (dari dokumen resmi ) mendeskripsikan siklus hidup aktivitas Android yang terkenal:
Di sisi lain, ketika aktivitas dimusnahkan oleh sistem (misalnya karena memori perlu diambil kembali), status aktivitas terkadang secara otomatis disimpan dan dipulihkan dengan menggunakan metode onSaveInstanceState()
dan onRestoreInstanceState()
, seperti yang diilustrasikan oleh gambar berikut (juga dari dokumen resmi ):
Saya sadar bahwa onSaveInstanceState()
ini tidak selalu disebut ketika suatu kegiatan akan segera dihancurkan. Misalnya, jika dimusnahkan karena pengguna telah menekan tombol "kembali", status aktivitas tidak dipertahankan. Namun dalam kasus ketika negara yang diselamatkan dan dipulihkan, dan onSaveInstanceState()
/ onRestoreInstanceState()
dipanggil, kapan tepatnya yang mereka disebut ?
Misalnya menurut gambar di atas, onRestoreInstanceState()
mungkin bisa dipanggil sebelum onStart()
, atau sesudah onStart()
tapi sebelum onResume()
, atau sesudah onResume()
. Demikian pula, ada beberapa kemungkinan onSaveInstanceState()
. Jadi kapan tepatnya mereka dipanggil?
Idealnya, yang saya inginkan adalah melihat diagram gabungan yang menunjukkan status siklus hidup aktivitas dan metode simpan / pulihkan , jika ada.
sumber
Jawaban:
Sesuai dokumentasi :
sumber
Sesuai doc1 dan doc2
sumber
Selain jawaban yang sudah diposting, ada perubahan halus yang diperkenalkan di Android P, yaitu:
Sumber: docs
Mengenai mengapa perubahan ini diperkenalkan, inilah jawabannya:
Sumber: docs
sumber
Do you know how will behave app that target P but runs on lower api?
Selama aplikasi dijalankan, katakanlah M, maka versi Android yang dimiliki perangkat ini tidak berisi perubahan, yang diperkenalkan di P, yang berarti bahwa terlepas dari Anda telah menentukan target karenaP
Anda tidak akan melihatnya berbeda untuk perangkat pra-P. Semoga ini menjawab pertanyaan Anda.Ini adalah informasi tambahan untuk onSaveInstanceState (Bundle)
dari dokumen
Jadi ini implementasi default untuk ..
sumber
// Callback ini dipanggil hanya jika ada instance tersimpan yang sebelumnya disimpan menggunakan // onSaveInstanceState (). Kami memulihkan beberapa status di onCreate () sementara kami secara opsional dapat memulihkan // status lain di sini, mungkin dapat digunakan setelah onStart () selesai. // Bundel saveInstanceState sama dengan yang digunakan di onCreate ().
sumber