Android – 将SQLite与MySQL同步的最佳方式

我正在开发一个包含网络应用和移动应用程序的项目,该应用程序记录每日用户的数据。 用户可以删除,更新他们的数据,他们可以使用许多设备插入数据。
我打算这样开发:
用户输入他们的数据然后插入SQLite。 服务将定期启动(每5小时或每小时)以使用时间戳与MySQL同步
我确实在互联网上使用服务和时间戳搜索了一个样本,但我一无所获。 如果有样本或教程会很棒。
我是Android的新手,我不知道开发这样的应用程序的最佳方式是什么。 提前致谢。

– – 编辑 – –
我考虑使用时间戳或同步。 哪个更有效?

您可以通过谷歌或任何其他libraries使用volley libraries ,这取决于您希望如何发送数据,最好的方法是使用JSON让您的生活更轻松,从您希望与后端同步的sqlite中获取数据并使用volley通过JsonObjectRequest发送它,例如您的请求可能如下所示

 jsonObjectRequest postForm = new JsonObjectRequest(Request.Method.POST, URL, YourJsonData, new Response.Listener() { @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. }); 

你可以添加一个新值,指示该值是否已同步或来自本地数据库。 例如,假设您有一个名为student的表,并且当您的响应返回成功时,此表有三列ID,NAME并在上面的代码中同步更新行同步列为true | false,表示此行是否与您的后端同步或没有。 要从数据库中获取数据,您应该执行以下操作。

 public String getStudents() { List students = new ArrayList(); 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); } 

最简单的方式AFAIK是使用像http://loopj.com/android-async-http/这样的lib或者volley lije k0sh说要将数据发送到管理mysql数据的PHP脚本。 您必须在服务器中编写一个php(或java)脚本来接收数据(您应该编写REST API)

要选择HTTP库,您应该在这里查看:

什么是最强大的Android的HTTP库?

您应该非常关心如何同步数据,因为它可能会耗尽您的电池电量。 在这里,您将学习如何优化更新:

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

希望能帮助到你!