Junior — Middle
როგორ შეიძლება უზრუნველყოს აქტიური კომპონენტთან დაკავშირებული ობიექტის შენარჩუნება Koin-ში?
sobes.tech AI
პასუხი AI-სგან
Koin-ში, აქტიური კომპონენტთან (მაგალითად, Activity ან Fragment) დაკავშირებული ობიექტის შენახვა ხდება იმ scope-ის (საზღვრის) მეშვეობით, რომელიც დაკავშირებულია ამ კომპონენტის სიცოცხლის ციკლთან.
იმისათვის, რომ ობიექტი იყოს შენახული კომპონენტის სიცოცხლის განმავლობაში, საჭიროა:
- შექმნათ scope, რომელიც დაკავშირებულია კომპონენტთან.
- განსაზღვროთ დამოკიდებულებები ამ scope-ის შიგნით.
- გამოიყენოთ scope, რათა მიიღოთ იმგვარი ინსტანციები, რომლებიც იმავე დროს ცხოვრობენ, როგორც კომპონენტი.
მაგალითი Activity-სთვის:
val activityModule = module {
scope<Activity> {
scoped { MyScopedDependency() }
}
}
// Activity-ში
class MyActivity : AppCompatActivity() {
private val myDependency: MyScopedDependency by currentScope.inject()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// ...
}
}
ამ გზით, MyScopedDependency ობიექტი შექმნდება და შენახული იქნება MyActivity-ს სიცოცხლის ციკლში და ერთად განადგურდება მასთან ერთად.