你可以通过谷歌或任何其他libraries
使用volley
库,这取决于你想如何发送的数据,最好的办法是,你使用JSON
,使您的生活更轻松,得到源码,你喜欢到数据通过后端同步,并使用凌空发送过来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.
});
ü可以添加一个新值指示值是否已同步或不从本地数据库。例如,假设您有一个名为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);
}
你应该替换st.setName(cursor.getString(1));通过cursor.getString(cursor.getColumnIndex(NAME))其中NAME是Sqlite列的名称。 – 2014-11-03 02:00:43
我应该使用时间戳还是同步?哪一个更好? – Foo 2014-11-03 02:12:09
@JuliatzindelToro正确,谢谢你的提升。 – k0sh 2014-11-03 03:35:35