Sobes.tech
Junior — Middle

Jak zajistit zachování objektu spojeného s aktivní složkou v Koin?

sobes.tech AI

Odpověď od AI

V Koinu se k ukládá objekt, který je spojen s aktivním komponentem (například Activity nebo Fragment), pomocí scope (rozsahu, oblasti), který je vázán na životní cyklus tohoto komponentu.

Aby bylo zajištěno uchování objektu po dobu života komponentu, je třeba:

  1. Vytvořit scope spojený s komponentem.
  2. Definovat závislosti uvnitř tohoto scope.
  3. Použít scope k získání instancí, které budou žít stejně dlouho jako komponent.

Příklad pro Activity:

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

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

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

Tímto způsobem bude objekt MyScopedDependency vytvořen a uložen v rámci životního cyklu MyActivity a zničen spolu s ní.