Foo*_*Foo 8 mysql sqlite android sync
我正在开发一个包含网络应用和移动应用程序的项目,该应用程序记录每日用户的数据.用户可以删除,更新他们的数据,他们可以使用许多设备来插入数据.
我打算用这种方式开发:
用户输入他们的数据然后插入SQLite.服务将定期启动(每5小时或每小时)以使用时间戳与MySQL同步.
我在网上搜索了一个使用服务和时间戳的样本,但我什么都没发现.如果有样本或教程会很棒.
我是Android的新手,我不知道开发这样的应用程序的最佳方式是什么.提前致谢.
----编辑----
我考虑使用时间戳或同步.哪个更有效?
你可以volley通过谷歌或任何替代方案使用库libraries,这取决于你想要如何发送数据,最好的方法是你JSON用来让你的生活更轻松,从你希望与你的后端同步的sqlite获取数据并发送它过度JsonObjectRequest使用凌空,例如您的请求可能如下所示
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.
});
Run Code Online (Sandbox Code Playgroud)
你可以添加一个新值,指示该值是否已同步或来自本地数据库.例如,假设您有一个名为student的表,当您的响应返回成功时,此表有三列ID,NAME并在上面的代码中同步更新行同步列为true | false,表示此行是否与您的后端同步或没有.要从数据库中获取数据,您应该执行以下操作.
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);
}
Run Code Online (Sandbox Code Playgroud)
最简单的方式AFAIK是使用像http://loopj.com/android-async-http/这样的lib 或者volley lije k0sh说要将数据发送到将管理你的mysql数据的PHP脚本.你必须在服务器中编写一个php(或java)脚本来接收你的数据(你应该编写一个REST API)
要选择HTTP lib,您应该在这里查看:
您应该非常关心如何同步数据,因为它可能会耗尽您的电池电量.在这里,您将学习如何优化更新:
https://developer.android.com/training/efficient-downloads/index.html
希望能帮助到你!
| 归档时间: |
|
| 查看次数: |
28855 次 |
| 最近记录: |