Desde Honeycomb
y el v4 Compatibility Library
es posible de usar AsyncTaskLoader
. Por lo que entiendo, elAsyncTaskLoader
puede sobrevivir a través de cambios de configuración como volteos de pantalla.
¿Se recomienda usar en AsyncTaskLoader
lugar de AsyncTask
? ¿ LoaderManager
Entra en la imagen también?
Pero no he encontrado ningún buen ejemplo sobre cómo usar correctamente el AsyncTaskLoader
. Los documentos tampoco proporcionan ejemplos. ¿Alguien puede dar algunos buenos ejemplos?
AsyncTaskLoader
, y cuando más desarrolladores comiencen a usarlo, aparecerán más ejemplos.Cuando compare AsyncTaskLoader versus AsyncTask , como sabrá cuando gire la pantalla de su dispositivo, puede destruir y volver a crear su actividad, para dejar en claro que la imagen gire su dispositivo mientras se realiza la transacción de red:
AsyncTask se volverá a ejecutar como subproceso de fondo nuevamente, y el procesamiento de subprocesos de fondo anterior era simplemente redundante y zombi.
AsyncTaskLoader solo se reutilizará basándose en la ID del cargador registrada anteriormente en el Administrador del cargador, así que evite volver a ejecutar la transacción de red.
En resumen, AsyncTaskLoader previene la duplicación de hilos de fondo y elimina la duplicación de actividades zombies.
fuente
AsyncTaskLoader realiza la misma función que AsyncTask , pero un poco mejor. Puede manejar los cambios de configuración de Actividad más fácilmente, y se comporta dentro de los ciclos de vida de Fragmentos y Actividades. Lo bueno es que AsyncTaskLoader se puede utilizar en cualquier situación en la que se esté utilizando AsyncTask. Cada vez que los datos deben cargarse en la memoria para que la Actividad / Fragmento los maneje, The AsyncTaskLoader puede hacer el trabajo mejor.
Sin embargo, hay algunos problemas con el uso de AsyncTasks:
AsyncTaskLoader doc
fuente
Algunas diferencias distintas a las descritas en otras respuestas:
Cuando use AsyncTaskLoader sobre AsyncTask :
AsyncTaskLoader nos da la libertad de cargar datos en caché antiguos hasta que los nuevos datos sean devueltos por
forceLoad()
Podemos establecer retrasos en AsyncTaskLoader por lo
setUpdateThrottle()
que puede evitar actualizaciones consecutivas al cliente (Actividad / Fragmento)AsyncTaskLoader se puede compartir con varios fragmentos si tienen actividad principal común y si se inició desde
getActivity().getSupportLoaderManager()
AsyncTaskLoader se destruye
LoaderManger
cuando su actividad vinculada ya no está disponible. mientras que necesitamos destruir manualmente AsyncTasks si su actividad de llamada destruye. Esto ahorra nuestro tiempo de escribir todas las cosas de limpieza. AsyncTaskLoader juega bien con sus respectivos ciclos de vida.Entonces, AsyncTaskLoader es mucho mejor que AsyncTask.
fuente