ฉันใช้ Koin สำหรับ DI แต่ฉันกำลังพยายามลดการพึ่งพากรอบงาน DI ดังนั้นคำถามของฉันเกี่ยวกับส่วนประกอบสถาปัตยกรรม Android โดยทั่วไป
เป็นไปได้ที่จะจัดเตรียมอินสแตนซ์ของ ViewModel โดยผู้รับมอบสิทธิ์คุณสมบัติในส่วนย่อย แต่ทำให้เกิดการเชื่อมต่อระหว่างส่วนย่อยและกรอบงาน DI ดังนั้นฉันจึงคิดวิธีแก้ปัญหา: ส่ง ViewModel ไปยัง Fragment ในตัวสร้าง การใช้งานปัจจุบันกับ Koin มีลักษณะดังนี้:
val di = module {
fragment {
MyFragment(
get<MyViewModel>(),
)
}
viewModel {
MyViewModel(
get<MyDependency>(),
)
}
//...
}
และมันก็ได้ผล แต่มีการจับเป็น เนื่องจาก ViewModel ถูกสร้างขึ้นก่อน Fragment จะไม่เป็นไปตามวงจรชีวิตของ Fragment และ onCleared()
จะไม่ถูกเรียกเมื่อ Fragment ถูกทำลาย
ฉันจึงสงสัยว่าฉันจะทำให้มันทำงานอีกครั้งได้อย่างไร