Junior — Middle
Qual é a diferença entre usar Lazy e Provider no Dagger ao injetar dependências?
sobes.tech IA
Resposta da IA
No Dagger, Lazy e Provider são usados para obter dependências de forma diferida, mas têm características diferentes:
-
Lazy<T>— fornece um objeto do tipoTna primeira chamada aget(), e depois devolve a mesma instância (armazena em cache o resultado). É usado quando se deseja atrasar a criação do objeto até ao seu primeiro uso, garantindo ao mesmo tempo uma única instância. -
Provider<T>— cria uma nova instância do objetoTa cada chamada aget(). É usado quando se precisa obter um novo objeto a cada vez.
Exemplo:
class MyClass @Inject constructor(
private val lazyDependency: Lazy<Dependency>,
private val providerDependency: Provider<Dependency>
) {
fun useLazy() {
val instance1 = lazyDependency.get()
val instance2 = lazyDependency.get() // instance1 == instance2
}
fun useProvider() {
val instance1 = providerDependency.get()
val instance2 = providerDependency.get() // instance1 != instance2
}
}