Usando androide-support-v4.jar y FragmentActivity (no hay fragmentos en este punto)no LoaderCallbacks.onLoadFinished llamados si cambio de orientación que sucede durante la ejecución AsyncTaskLoader
tengo una AsyncTaskLoader que comienzo a la carga y a continuación, cambiar el mientras que la orientación el hilo de fondo aún se está ejecutando. En mis registros veo que las respuestas vienen a las solicitudes de fondo. Las respuestas se completan y espero que onLoadFinished() sea llamado, pero nunca lo es.
Como medio de solución de problemas, en el Manifiesto, si configuro android: configChanges = "orientation" onLoadFinished() se llama como se esperaba.
Mi actividad implementa las devoluciones de llamadas del cargador. En la fuente de LoaderManager.initLoader() veo que si el cargador ya existe, la nueva devolución de llamada se establece en la clase de objeto interno LoaderInfo, pero no veo dónde se llama de nuevo Loader.registerListener(). registerListener solo parece invocarse cuando se llama a LoaderManagerImpl.createAndInstallLoader().
Sospecho que, dado que la actividad se destruye y recrea en el cambio de orientación, y dado que es el oyente de las devoluciones de llamada, la nueva actividad no se registra para notificarse.
¿Alguien puede confirmar mi comprensión y cuál es la solución para que se llame a onLoadFinished después de cambiar la orientación?
Como otro paso de solución de problemas agregué un Fragmento de trabajador sin UI y setRetainInstance en verdadero. El Fragmento implementa los LoaderCallbacks. El Fragmento se retiene entre los cambios de orientación, pero no se llama a su OnLoadFinished() después del cambio de orientación. – Daddyboy
¿A dónde llamas 'initLoader()'? Asegúrese de que esté en 'onCreate()'. Por cierto, puede usar 'LoaderManager.enableDebugLogging (true)' para obtener información de depuración sobre el ciclo de vida del cargador (en logcat). –