Callback LazyLifeCycle adalah kerangka kerja sederhana untuk menunda tugas -tugas non -esensial Anda, dan inisialisasi keluar dari jalur peluncuran layar sambil mempertahankan jaminan eksekusi yang sama dari panggilan siklus hidup Android.
Draw pertama: Saat aplikasi diluncurkan, Play Store melacak nomor peluncuran yang dingin, hangat, dan panas. Dan itu dilakukan dengan mengukur seberapa cepat aplikasi Anda dapat menggambar bingkai pertama Anda. Aplikasi dapat dimulai melalui peluncur, pemberitahuan, deeplink dll, dan masing -masing dapat mendaratkan pengguna di layar yang berbeda. Aplikasi dianggap telah membuat layar pertamanya ketika penanda "ditampilkan" ditampilkan di logcat. Itu selalu ditunjukkan setelah semua panggilan balik ke atas seperti OnCreate, Onstart, dan OnResume telah kembali.
Jadi, kode apa pun yang dijalankan di OnCreate, Onstart, dan OnResume, dan panggilan balik ke atas lainnya (tidak menyebutkan hal -hal seperti Onpostresume) memiliki potensi untuk membuat waktu peluncuran layar menjadi buruk. Jadi, disarankan untuk menghapus kode yang dapat ditangguhkan dari panggilan siklus hidup Android.
Tapi ke mana kita harus memindahkannya? Kita dapat melakukan hal -hal sesuai permintaan, tetapi tidak semua hal dapat dipindahkan ondemand. Misalnya, Anda ingin mulai membuat panggilan N/W untuk mengambil gambar sesegera mungkin. Di sini, kami tidak ingin itu memulai saat rendering layar sedang terjadi, tetapi saat layar mulai dengan tampilan placeholder, kita perlu memulai panggilan N/W-DB. Misalkan Anda ingin memuat konsep email dari DB, pertama kami ingin membuat layar komposisi dan kemudian mulai mengambil draft.
Urutan panggilan balik ini dipertahankan sesuai Android. Dalam suatu kegiatan, onLazyCreate () akan diikuti oleh di lazyStart (), diikuti oleh onlazyresume (). Dalam fragmen, onLazyCreate () akan diikuti oleh OnViewCreatedLazy (view), diikuti oleh onLazyStart () diikuti oleh onlazyresume (). Satu hal yang perlu diingat adalah, semua panggilan balik malas terjadi setelah pemicu manajer siklus hidup yang malas puas. Mereka tidak menyampaikan callback siklus hidup Android.
Tambahkan kode di bawah ini ke dependensi file build.gradle dependencies { implementation 'com.github.microsoft:LazylifecycleCallbacks:v1.0' }
LazyLifecycleCallbacks dalam aktivitas (lebih disukai BaseActivity ), dan memberikan implementasi default dari metode ini.onCreate() .lifecycleManager.activate() di onResume ,lifecycleManager.deactivate() di onPause()supportsLazyLifecycleCallbacks() ke true .BaseActivity Anda sekarang dapat mengesampingkan panggilan siklus hidup yang malas dan menggunakannya.Lihat kode di bawah ini:
abstract class BaseActivity : AppCompatActivity (), LazyLifecycleCallbacks {
protected lateinit var lazyLifecycleManager : LazyLifecycleManager
override fun onCreate ( savedInstanceState : Bundle ? ) {
super .onCreate(savedInstanceState)
lazyLifecycleManager = ViewBasedLazyLifecycleManager ( this )
}
override fun onResume () {
super .onResume()
lazyLifecycleManager.activate()
}
override fun onPause () {
super .onPause()
lazyLifecycleManager.deactivate()
}
override fun onLazyCreate () {}
override fun onLazyStart () {}
override fun onLazyResume () {}
override fun supportsLazyLifecycleCallbacks (): Boolean = false
}