Страница 1 из 1

rest

Добавлено: 02 авг 2014, 01:52
dellby
Добрый день.

Подскажите plz.
Делаю приложение работающее с backend rest-api.
как лучше действовать создавать например intentService и из него работать с backend (тогда если приложение упадет, есть большие гарантии, что запрос выполниться) или достаточно выполнять запросы предположим в AsyncTask?

Спасибо.

Re: rest

Добавлено: 02 авг 2014, 11:18
Mikhail_dev
Я делаю синглтон и библиотеку Volley, где юзаю методы отправки данных. В onPause и перед новым запросом, всегда вызываю метод удаления прошлых запросов для данного запроса. Есть правда минус, при повороте экрана, запрос отменяется. Но я решил что пока и так сойдет =)
Вот пример двух взаимосвязанных методов

[syntax=java5]
public void requestDeleteUser(final int _userId, final NetworkListener mCallBack) {
String url = NetworkUtils.getDeleteUserUrl(_userId);

Logger.log(Logger.DEBUG, "test", "delete user: " + url);

JsonObjectRequest req = new JsonObjectRequest(Method.DELETE, url, new JSONObject(),
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
response.put(UIUtils.DELETED_USER_ID,_userId);
mCallBack.onResponse(response, DELETE_USER_REQUEST);
} catch (JSONException e) { }
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
mCallBack.onErrorResponse(volleyError, DELETE_USER_REQUEST);
}
}) {

@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> params = new HashMap<String, String>();
params.put("Content-Type", "application/json");
SecurityManager.getInstance().fillAuthData(params);
return params;
}
};

cancelRequestDeleteUser();
NetworkController.getInstance().addToRequestQueue(req,DELETE_USER_REQUEST);
}

public void cancelRequestDeleteUser() {
cancelPendingRequests(DELETE_USER_REQUEST);
}
[/syntax]
А сам синглтон, я позаимствовал с данной статьи
http://arnab.ch/blog/2013/08/asynchrono ... ng-volley/

Re: rest

Добавлено: 03 авг 2014, 17:32
dellby
Спасибо за ответ.
Попробую с либой, хотя своя реализация имхо не сложней.
А если сделать эту реализацию хотябы в iner class и при повороте сохранять ссылку на него?

Re: rest

Добавлено: 03 авг 2014, 22:02
Mikhail_dev
Если надо при повороте сохранять запрос, то советую выбрать Loader, а именно AsyncTaskLoader. Это наиболее правильный как по мне вариант, который к тому же советует гугл.