Sobes.tech
Junior — Middle

Como implementar a passagem de dependências através do contexto dentro do ViewModel?

sobes.tech IA

Resposta da IA

No Android, geralmente não é recomendado armazenar ou usar diretamente o Context para evitar fugas de memória. No entanto, se precisar passar dependências através do contexto, pode usar as seguintes abordagens:

  • Passar o Contexto da Aplicação: Herde de AndroidViewModel, que fornece acesso ao Contexto da Aplicação.
class MyViewModel(application: Application) : AndroidViewModel(application) {
    private val context = getApplication<Application>().applicationContext
    // Use o contexto para acessar recursos ou serviços do sistema
}
  • Usar Injeção de Dependências: Passar as dependências necessárias ao construtor do ViewModel através de uma fábrica.
class MyViewModel(private val repository: MyRepository) : ViewModel() {
    // Lógica do ViewModel
}

class MyViewModelFactory(private val repository: MyRepository) : ViewModelProvider.Factory {
    override fun <T : ViewModel> create(modelClass: Class<T>): T {
        if (modelClass.isAssignableFrom(MyViewModel::class.java)) {
            return MyViewModel(repository) as T
        }
        throw IllegalArgumentException("Classe de ViewModel desconhecida")
    }
}

Desta forma, o contexto é usado com cuidado, e as dependências são passadas explicitamente, o que melhora a testabilidade e previne fugas de memória.