Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

819
Visualizações
Inyectar contexto con Hilt: este campo filtra un objeto de contexto

Estoy usando Hilt para inyectar contexto y otras dependencias en mi clase HomeViewModel; Todo funciona correctamente, pero recibo esta advertencia. ¿Cómo puedo evitar las fugas?

Este es mi HomeFragment (donde inyecto y uso la clase HomeViewModel):

 @AndroidEntryPoint class HomeFragment : Fragment() { private val viewModel: HomeViewModel by viewModels() .... }

Esta es la advertencia:

Vista de inyección de empuñaduraModelo

 class HomeViewModel @ViewModelInject constructor( @ApplicationContext val context: Context, private val locationAPI: LocationAPI, private val imagesAPI: ImagesAPI ) : ViewModel() { ... }

Estoy usando:

 //Hilt DI implementation "com.google.dagger:hilt-android:2.30.1-alpha" kapt "com.google.dagger:hilt-android-compiler:2.30.1-alpha" implementation "androidx.hilt:hilt-lifecycle-viewmodel:1.0.0-alpha02" kapt "androidx.hilt:hilt-compiler:1.0.0-alpha02"

¡Gracias!

- Editado, como se sugiere, después de la primera respuesta dada:

El fragmento de inicio ahora es:

ingrese la descripción de la imagen aquí

 @HiltViewModel class DetailsViewModel @Inject constructor( @ApplicationContext val context: Context, private val locationDetailsAPI: LocationAPI) : ViewModel() { ... }

Dependencias actualizadas a:

 //Hilt DI implementation "com.google.dagger:hilt-android:2.31-alpha" kapt "com.google.dagger:hilt-android-compiler:2.30.1-alpha" implementation "androidx.hilt:hilt-lifecycle-viewmodel:1.0.0-alpha03" kapt "androidx.hilt:hilt-compiler:1.0.0-alpha03"

Y sigo recibiendo este error de fuga.

¿Alguna idea?

over 4 years ago · Hanz Gallego
5 Respostas
Responde à pergunta

0

Después de enfrentar esa advertencia

ingrese la descripción de la imagen aquí

Decidí perfilar la memoria para garantizar que el enfoque provoque una pérdida de memoria, pero lo que encontré es bastante interesante.

ingrese la descripción de la imagen aquí

sí, no hay fugas , es solo una advertencia, así que no te preocupes más, feliz codificación;)

over 4 years ago · Hanz Gallego Relatório

0

¿La versión de su complemento Kotlin es 1.4.30-release-Studio4.1-1?

Si es así, baje la versión del complemento kotlin.

En la versión 1.4.30-release-Studio4.1-1,

si viewmodel tiene contexto como variable de instancia, genera una advertencia.

over 4 years ago · Hanz Gallego Relatório

0

No recibo esta advertencia e inyecto un contexto de la misma manera.

Intenta actualizar a 2.31.2-alpha para hilt y 1.0.0-alpha03 para hilt-androidx

Hay algunos cambios importantes. Deberá anotar sus modelos de vista con @HiltViewModel, use @Inject en lugar de @ViewModelInject. Y deberá reemplazar cualquier referencia a ApplicationComponent con SingletonComponent.

over 4 years ago · Hanz Gallego Relatório

0

Tuve el mismo problema después de actualizar las dependencias de Hilt.

Es correcto usar @HiltViewModel con @Inject antes del constructor.

Con respecto a la fuga debido al Contexto, simplemente elimínelo del constructor ViewModel y pase el Contexto como parámetro de método de sus funciones, así:

 @HiltViewModel class HomeViewModel @Inject constructor( private val locationDetailsAPI: LocationAPI, private val imagesAPI: ImagesAPI ) : ViewModel() { fun getImages(context: Context) { // do something } }
over 4 years ago · Hanz Gallego Relatório

0

Inyecte la aplicación en su lugar:

 @Inject constructor(private val application: Application)

Entonces puedes obtener el contexto de esta manera:

 application.applicationContext
over 4 years ago · Hanz Gallego Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda