можно использовать volley
библиотеку Google или любой альтернативной 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.
});
у может добавить новое значение, которое указывает, имеет ли значение было синхронизации или нет из локальной базы данных. например, скажем, у вас есть таблица со студентом, и в этой таблице есть три столбца, которые являются 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)); by cursor.getString (cursor.getColumnIndex (NAME)), где NAME - это имя столбца Sqlite. –
Должен ли я использовать временную метку или синхронизировать? Какая из них лучше? – Foo
@JuliatzindelToro правильно, спасибо за хэдсп. – k0sh