sincronizacion - Cuando SyncAdapter ejecuta la sincronización en Android?
sincronizar base de datos mysql con sqlite android (1)
Digamos que mi aplicación implementa la funcionalidad SyncAdapter y no define sincronizaciones periódicas. ¿Cuándo ocurrirá la sincronización en tal escenario? El primer escenario en el que puedo pensar es el cambio de contenido de la base de datos / contenido provisto local. ¿Qué pasa con los cambios del servidor? ¿Cómo SyncAdapter sabrá sobre eso?
Si no tiene una configuración de sincronización periódica, la sincronización ocurrirá si su código llama explícitamente a ContentResolver.requestSync(Account account, String authority, Bundle extras)
con su cuenta y autoridad.
Además, si las funciones de inserción, actualización o eliminación de ContentResolver.notifyChange(Uri uri, ContentObserver observer, boolean syncToNetwork)
llaman a ContentResolver.notifyChange(Uri uri, ContentObserver observer, boolean syncToNetwork)
, si bool syncToNetwork es verdadero (el valor predeterminado), también activará una sincronización. Aquí se induce un breve retraso para garantizar que un lote de cambios en la base de datos solo genere una sincronización, no una por cambio. Tenga en cuenta que su código debería llamar a notifyChange
porque es la forma en que Android le indica a su interfaz de usuario que se actualice después de que el contenido que la interfaz de usuario refleja se haya cambiado.
Si la base de datos del servidor cambia, su aplicación no lo sabrá, porque la sincronización no está ocurriendo. Dos opciones:
- Utilice la sincronización periódica. Esto quedará más limpio si la API de su servidor implementa etags o los encabezados http si ha sido modificado desde entonces para filtrar los datos que sincroniza, de modo que solo se desactiven las actualizaciones.
- C2DM (Cloud 2 Device Messaging) Esencialmente, notificación push para Android. Requiere algunos componentes del servidor: vincula una ID de dispositivo a una cuenta en el servidor y cuando el servidor cambia, tiene que enviar un mensaje explícito al dispositivo para indicarle que se actualice. Este es un trabajo de código personalizado en el servidor para dar soporte específicamente a Android, pero una vez que invierte el tiempo, es genial. C2DM es la forma en que Android consigue que gmail aparezca en su dispositivo 10 segundos después de que llegue a su bandeja de entrada, en lugar de hacerlo en la siguiente sincronización periódica de 10 minutos. También es más eficiente con la batería ya que solo enciendes la radio y te sincronizas cuando sabes que hay nuevos datos para obtener.