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.