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?
- Pushwoosh filtrando mi actividad
- Android Eclipse DDMS> Heap> Causa gris de GC
- Cómo corregir este error: java.lang.OutOfMemoryError
- Memoria y Actividades :: OutOfMemory
- Fuera de la memoria de excepción + análisis de volcado de archivos hprof
Además, ¿cómo puede evitar escapar el contexto si necesita referencias a los diálogos de progreso para descartarlos?
- Fuera de la memoria Picasso Lib
- Pocas pérdidas de memoria en Facebook SDK
- El montón de memoria de aplicaciones de Android sigue creciendo
- Android VM No nos permite asignar xx bytes
- LeakCanary detecta pérdida de memoria de Android WebView
- Jit: Redimensionar JitTable de 512 a 1024 y así sucesivamente ... ¿qué es esto?
- Android fuera de la prevención de la memoria
- Mostrar imagen grande de la tarjeta SD en Android
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();
- Anuncios personalizados en admob android studio basado en palabras clave
- Eclipse Android emulador AVD no muestra botones para la piel de resolución personalizada