Saya menggunakan Koin untuk DI tetapi saya mencoba menghilangkan ketergantungan pada kerangka DI jadi pertanyaan saya adalah tentang Komponen Arsitektur Android secara umum.
Dimungkinkan untuk menyediakan instance ViewModel dengan delegasi properti dalam fragmen tetapi hal ini menyebabkan penggabungan antara fragmen dan kerangka DI. Jadi saya menemukan solusi: meneruskan ViewModel ke Fragment di konstruktor. Implementasi saat ini dengan Koin terlihat seperti ini:
val di = module {
fragment {
MyFragment(
get<MyViewModel>(),
)
}
viewModel {
MyViewModel(
get<MyDependency>(),
)
}
//...
}
Dan itu berhasil. Tapi ada batasannya. Karena ViewModel dibuat sebelum Fragmen, ia tidak mengikuti siklus hidup Fragmen dan onCleared()
tidak dipanggil ketika Fragmen dihancurkan.
Jadi saya bertanya-tanya bagaimana cara membuatnya berfungsi kembali?