Módulos e provedores
Informe ao Hilt como criar dependências.
Módulos e provedores é uma aula grátis de Android Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Android Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Android Academy inclui 4 aulas no total.
Ensinando Hilt a criar objetos
Hilt pode construir uma classe automaticamente se o construtor dela estiver anotado com @Inject. Porém, para interfaces ou tipos que não pertencem a você, é preciso ensinar ao Hilt usando um Module.
Injeção pelo construtor
O caso mais simples: anote o construtor e o Hilt saberá como criar a classe.
class Analytics @Inject constructor(
private val api: ApiService
)Quando a injeção pelo construtor não é suficiente
Você não pode anotar o construtor de:
- Uma interface (que não possui construtor).
- Uma classe de uma biblioteca (por exemplo, Retrofit ou Room).
Esses casos precisam de um módulo.
Definindo um módulo
Um @Module informa ao Hilt como fornecer tipos. @InstallIn declara a qual componente (escopo) ele pertence.
import dagger.Module
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
@Module
@InstallIn(SingletonComponent::class)
object NetworkModule@Provides para tipos de bibliotecas
Use @Provides em uma função que cria e retorna a dependência. Hilt a chama quando esse tipo é necessário.
@Provides
@Singleton
fun provideRetrofit(): Retrofit =
Retrofit.Builder()
.baseUrl("https://api.example.com/")
.build()Os provedores podem depender uns dos outros
Uma função @Provides pode receber parâmetros; Hilt os fornece a partir do grafo.
@Provides
fun provideApi(retrofit: Retrofit): ApiService =
retrofit.create(ApiService::class.java)@Binds para interfaces
Para associar uma interface a uma implementação, use @Binds em um módulo abstrato. Isso é mais eficiente que @Provides para associações simples.
@Module
@InstallIn(SingletonComponent::class)
abstract class RepoModule {
@Binds
abstract fun bindRepo(
impl: NetworkUserRepository
): UserRepository
}@Provides vs @Binds
- @Binds — quando você apenas associa uma interface a uma implementação que possui injeção pelo construtor. Função abstrata.
- @Provides — quando é preciso executar código para criar o objeto (por exemplo, um construtor).
Definindo escopo com @Singleton
Anote um provedor com um escopo, como @Singleton, para que Hilt reutilize uma única instância em todo o aplicativo, em vez de criar uma nova a cada vez.
Associando o escopo ao componente
O escopo deve corresponder ao componente: @Singleton com SingletonComponent, @ActivityScoped com ActivityComponent e assim por diante.
Resumo dos módulos
@Module+@InstallIndefine onde as associações ficam.@Providescria tipos de bibliotecas ou complexos.@Bindsassocia interfaces a implementações.
Verificação rápida
Teste sua compreensão de módulos e provedores.
Recapitulação
Você aprendeu:
- A injeção pelo construtor funciona quando a classe pertence a você.
@Module+@InstallInensina o Hilt a fornecer outros tipos.@Providescria objetos de bibliotecas ou complexos;@Bindsassocia interfaces.- Associe escopos, como
@Singleton, ao componente correspondente.
Perguntas Frequentes
A aula “Módulos e provedores” é grátis?
Sim — o texto completo de “Módulos e provedores” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Android Academy, atualize para CoddyKit PRO. O curso de Android Academy inclui 4 aulas no total.
O que vou aprender em “Módulos e provedores”?
Informe ao Hilt como criar dependências. Você pratica Android Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Android Academy?
Nenhuma experiência prévia é necessária. Android Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Módulos e provedores”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Android Academy?
Sim. Cada aula de Android Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Por que usar injeção de dependências?
- Configurando o Hilt
- Módulos e provedores
- Injetando em ViewModels