你可以通過谷歌或任何其他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