0Pricing
Android Academy · Aula

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 + @InstallIn define onde as associações ficam.
  • @Provides cria tipos de bibliotecas ou complexos.
  • @Binds associa 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 + @InstallIn ensina o Hilt a fornecer outros tipos.
  • @Provides cria objetos de bibliotecas ou complexos; @Binds associa 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

  1. Por que usar injeção de dependências?
  2. Configurando o Hilt
  3. Módulos e provedores
  4. Injetando em ViewModels
← Voltar para Android Academy