Fugas de contexto de Android en AsyncTask

Si interpreto correctamente este artículo , pasar el contexto de actividad a AsyncTasks es una fuga potencial, ya que la actividad podría ser destruida mientras la tarea sigue en ejecución.

¿Cómo lidiar con esto en AsyncTasks que no son clases internas y necesitan acceso a recursos o para actualizar la interfaz de usuario?

Además, ¿cómo puede evitar escapar el contexto si necesita referencias a los diálogos de progreso para descartarlos?

Si entiendo su pregunta correctamente: la clase WeakReference o SoftReference de Java es un buen ajuste para este tipo de situación. Esto le permitirá pasar el contexto al AsyncTask sin impedir que el GC libere el contexto si es necesario.

El GC está más ansioso al recolectar WeakReferences que al recoger SoftReferences.

en lugar de:

 FooTask myFooTask = new FooTask(myContext); 

Su código se vería así:

 WeakReference<MyContextClass> myWeakContext = new WeakReference<MyContextClass>(myContext); FooTask myFooTask = new FooTask(myWeakContext); 

Y en el AsyncTask en lugar de:

 myContext.someMethod(); 

Su código se vería así:

 myWeakContext.get().someMethod(); 
  • Cómo borrar la vista creada dinámicamente de la memoria?
  • Gestión de memoria HttpClient
  • ¿Cómo encontrar la raíz de fugas de memoria?
  • Cómo despedir AlertDialog.Builder?
  • ¿Drawable toma menos memoria entonces un mapa de bits?
  • Bitmaps de Android en la memoria de fugas xml?
  • Mensaje de registro en Android: / dev / pmem: Unmapping buffer base
  • Android - es onDestroy supone destruir la actividad, sus variables y liberar memoria
  • Android: libera recursos de memoria de mapa de bits de forma programática
  • Atascado en "Vaciar memoria, la aplicación se congelará. Brrr. "Mensaje
  • Tratamiento de mapas de bits grandes (mosaico de un pequeño mapa de bits para crear papel tapiz)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.