Sobes.tech
Junior — Middle

როგორ შეიძლება უზრუნველყოს აქტიური კომპონენტთან დაკავშირებული ობიექტის შენარჩუნება Koin-ში?

sobes.tech AI

პასუხი AI-სგან

Koin-ში, აქტიური კომპონენტთან (მაგალითად, Activity ან Fragment) დაკავშირებული ობიექტის შენახვა ხდება იმ scope-ის (საზღვრის) მეშვეობით, რომელიც დაკავშირებულია ამ კომპონენტის სიცოცხლის ციკლთან.

იმისათვის, რომ ობიექტი იყოს შენახული კომპონენტის სიცოცხლის განმავლობაში, საჭიროა:

  1. შექმნათ scope, რომელიც დაკავშირებულია კომპონენტთან.
  2. განსაზღვროთ დამოკიდებულებები ამ scope-ის შიგნით.
  3. გამოიყენოთ 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-ს სიცოცხლის ციკლში და ერთად განადგურდება მასთან ერთად.