Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

807
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

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 Denunciar

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda