Android – La mejor manera de sincronizar SQLite con MySQL

Estoy trabajando en un proyecto que contiene aplicaciones web y aplicaciones móviles que registran los datos de los usuarios diarios. El usuario puede eliminar, actualizar sus datos y puede utilizar muchos dispositivos para insertar datos.
Tengo la intención de desarrollar de esta manera:
El usuario introduce sus datos e inserta a SQLite. Un servicio se iniciará periódicamente (cada 5hr o algo) para sincronizar con MySQL usando timestamp.
Hice la búsqueda de una muestra utilizando el servicio y timestamp en Internet, pero no encontré nada. Sería genial si hay una muestra o tutorial.
Soy nuevo en Android y no tengo ni idea de cuál es la mejor manera de desarrollar una aplicación como esta. Gracias por adelantado.

—-EDITAR—-
Considero el uso de timestamp o sincronizado. ¿Cuál es más eficaz?

Usted podría utilizar la biblioteca volley por google o cualquier otra libraries , depende de cómo desea enviar los datos, el mejor enfoque es que utiliza JSON para hacer su vida más fácil, obtener los datos de sqlite que te gusta sincronizar con su backend Y enviarlo a través de JsonObjectRequest utilizando volley, por ejemplo, su solicitud puede verse así

 jsonObjectRequest postForm = new JsonObjectRequest(Request.Method.POST, URL, YourJsonData, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { // here you can get your response. },new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { // here you can tell there is something went wrong. }); 

U podría agregar un nuevo valor que indica si el valor se ha sincronizado o no desde su base de datos local. Por ejemplo, digamos que tienes una tabla llamada student y esta tabla tiene tres columnas que son ID, NAME y sincronizadas en código anterior cuando tu respuesta devuelve éxito actualiza esa columna de fila sincronizada con true | false que indica si esta fila se sincroniza con tu backend o no. Y para obtener los datos de su base de datos debe hacer algo como esto.

 public String getStudents() { List<Student> students = new ArrayList<Student>(); String query = "SELECT * FROM " + STUDENT+ "where synced=0"; SQLiteDatabase db = this.getWritableDatabase(); Cursor cursor = db.rawQuery(query, null); if (cursor.moveToFirst()) { do { Student st = new Student(); st.setId(cursor.getString(cursor.getColumnIndex(ID))); st.setName(cursor.getString(cursor.getColumnIndex(NAME))); st.setSynced(cursor.getInt(cursor.getColumnIndex(SYNCED))); students.add(st); } while (cursor.moveToNext()); } db.close(); return new Gson().toJson(students); } 

La manera esieast AFAIK es usar un lib como http://loopj.com/android-async-http/ o volley lije k0sh dice enviar datos a un script PHP que te administrará datos mysql. Tendrás que escribir un script php (o java) en tu servidor para recibir tus datos (deberías escribir una API REST)

Para seleccionar su HTTP lib, debe buscar aquí:

¿Cuál es la biblioteca HTTP más robusta para Android?

Realmente debe preocuparse por cómo va a sincronizar sus datos, ya que podría drenar su batería. Aquí aprenderá cómo optimizar sus actualizaciones:

https://developer.android.com/training/efficient-downloads/index.html

¡Espero eso ayude!

  • java.lang.IllegalStateException: getWritableDatabase llamado recursivamente
  • Bucle a través de un Cursor SQLite lleva demasiado tiempo
  • Android: insertar registro sqlite con la columna AUTOINCREMENT
  • Incremento automático de SQLite de Android
  • Uso correcto de Sqlite en Android (SQLiteOpenHelper, conexiones, hilo principal, etc ...)
  • ¿Cómo manejas los registros de antememoria de caché en la aplicación para móviles
  • Cursor while loop devuelve cada valor pero el último
  • Android android.database.CursorIndexOutOfBoundsException: Índice x solicitado, con un tamaño de x
  • Error de Android escribiendo datos de ubicación en la base de datos SQLite de la clase LocationListener
  • Consulta SQL para la relación de los hijos progenitores
  • Hacer inserciones SQLite eficientes con Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.