Sobes.tech
Junior — Middle

Kako osigurati očuvanje objekta povezanog sa aktivnim komponentom u Koin?

sobes.tech АИ

Одговор од АИ

U Koin-u, za čuvanje objekta povezanog sa aktivnim komponentom (npr. Activity ili Fragment), koristi se scope (opseg), koji je povezan sa životnim ciklusom tog komponenta.

Da bi se obezbedilo čuvanje objekta tokom trajanja života komponenta, potrebno je:

  1. Kreirati scope povezan sa komponentom.
  2. Definisati zavisnosti unutar tog scope-a.
  3. Koristiti scope za dobijanje instanci koje će živeti onoliko koliko i komponent.

Primer za Activity:

val activityModule = module {
    scope<Activity> {
        scoped { MyScopedDependency() }
    }
}

// U Activity
class MyActivity : AppCompatActivity() {
    private val myDependency: MyScopedDependency by currentScope.inject()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        // ...
    }
}

Na ovaj način, objekat MyScopedDependency biće kreiran i sačuvan u okviru životnog ciklusa MyActivity i uništen zajedno sa njom.