2012-07-02 57 views
48

Estoy desarrollando una aplicación de Android que almacena diferentes tipos de datos en la luz SQL integrada proporcionada por la plataforma Android.Cómo sincronizar la base de datos de Android con un servidor SQL en línea?

Dentro de la aplicación coloqué un botón "Sincronizar" que se supone que sincroniza los datos entre la base de datos SQL Light local, con una base de datos SQL Server en línea en mi servidor.

¿Cuál es la solución para manejar esto? Esta función se puede encontrar en Google Calendar, donde puede ver los eventos del calendario en su dispositivo móvil, y cuando agrega un nuevo evento y sincroniza los datos, puede ver los datos actualizados yendo también a su cuenta en línea.

Nota: No quiero centralizar mi base de datos en línea, porque también quiero dar a los usuarios de dispositivos móviles la posibilidad de utilizar la aplicación sin conexión a Internet.

Gracias.

+2

Escriba un servicio web y obtenga datos actualizados del servicio y actualice su base de datos sqllite ..vice versa –

+0

He usado PHP para escribir un servicio web en el pasado. Dependiendo de su implementación, es posible que desee bajar nuevos eventos y ponerlos en su sqlite db o agregar/eliminar/modificar. La mejor/única forma es escribir un servicio web como middleware para comunicarse entre su aplicación y back-end. – javajavajava

+0

¿estás sincronizando entre sqllite y un servidor mysql? – morty346

Respuesta

60

Debería echar un vistazo al proyecto SampleSyncAdapter en las demos de Android SDK (Transferring Data Using Sync Adapters). Le muestra cómo sincronizar el "estilo de Android", que no requiere interacción del usuario al tocar manualmente un botón de sincronización todo el tiempo.

Además de eso, necesita escribir software de servidor que pueda proporcionar a su SyncAdapter un "delta" de todos los cambios desde la última confirmación. El enfoque más básico es mantener una marca de tiempo "sincronizada por última vez" en su aplicación que debe provenir del servidor; de lo contrario, podría tener problemas debido a diferencias de tiempo entre el cliente y el servidor. Normalice todas las marcas de tiempo como GMT o cualquier zona horaria de su elección, pero quédese con esa decisión. Si su aplicación necesita mostrar una marca de tiempo en la hora local, entonces necesita usar la clase Java Calendar y TimeZone para convertir la marca de tiempo normalizada en hora local.

Su aplicación también necesita marcar los registros locales modificados como "sucios", por lo que su SyncAdapter sabe que debe cargar estos registros modificados o nuevos en el servidor.

siguientes características mínimas son necesarios para su software de servidor: la función

  • Actualizar el registro (s)
  • Añadir nuevo registro de la función (s)
  • Obtener registros actualizados desde la última sincronización (aplicación proporciona el tiempo sello)
  • Obtener nuevos registros desde la última sincronización (aplicación proporciona sello de tiempo)

También puede leer algunas API de Google (como Google Calendar) para tener una idea de cómo funciona todo esto y cómo diseñar la interfaz API del servidor para la comunicación.

+0

¡Respuesta perfecta! Muchas gracias. –

+6

[Un enlace a una muestra.] (Http://developer.android.com/training/sync-adapters/index.html) – BRS

+1

@CodeZombie, agregado a la pregunta – naXa

Cuestiones relacionadas