Sobes.tech
Junior — Middle

Como garantir a preservação do objeto associado ao componente ativo no Koin?

sobes.tech IA

Resposta da IA

No Koin, para guardar um objeto associado a um componente ativo (por exemplo, uma Activity ou Fragment), utiliza-se um escopo (scope) ligado ao ciclo de vida desse componente.

Para garantir a preservação do objeto durante a vida do componente, deve-se:

  1. Criar um scope ligado ao componente.
  2. Definir as dependências dentro desse scope.
  3. Utilizar o scope para obter instâncias que viverão tanto quanto o componente.

Exemplo para Activity:

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

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

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

Dessa forma, o objeto MyScopedDependency será criado e mantido dentro do ciclo de vida de MyActivity e destruído junto com ela.