Estoy actualizando una aplicación de Android 2.2 para usar CursorLoader (usando la biblioteca de compatibilidad de v4) y me estoy deshojando tratando de entender por qué no se llama al método onLoadFinished
cuando el proveedor de contenido notifica un cambio en el contenido asociado con la consulta de CursorLoader.Android CursorLoader no responde a las notificaciones de ContentProvider
El CursorLoader está consultando a un proveedor de contenido del cliente. Mi proveedor establece la notificación URI en su método de consulta:
cursor.setNotificationUri(getContext().getContentResolver(), uri);
y notifica a los cambios en su insertar/actualizar/borrar métodos:
getContext().getContentResolver().notifyChange(uri, null);
He comprobado que el URI es idéntica en ambos casos. Anteriormente estaba usando ManagedQuery con el mismo proveedor de contenido y el contenido consultado se actualizó correctamente, lo que me hace pensar que el proveedor de contenido probablemente esté bien.
He visto el ejemplo LoaderCursorSupport y, curiosamente, cuando lo ejecuto en mi Nexus One no veo que refleje los cambios que realizo en los nombres de contacto (alternar entre la aplicación de ejemplo y la de contactos). ¿Deberia? Si es así, ¿hay algún problema subyacente del que no tengo conocimiento?
¿Podría proporcionarnos algún código para ayudarnos a identificar el problema? –
Habilitar la depuración podría ayudar, 'LoaderManager.enableDebugLogging (true)' –
Gracias por la sugerencia de depuración. Mi código de cliente es esencialmente el mismo que el ejemplo de LoaderCursorSupport al que hice referencia. Dado que esto presenta el mismo problema, ¿he entendido mal cómo se supone que CursorLoader funciona, es decir, si ejecuto el ejemplo de soporte para mostrar una lista de contactos, edito el contacto en la libreta de direcciones, si no cambia en la lista que muestra el aplicación de ejemplo? – siwatson