rest

Ответить
dellby
Сообщения: 4
Зарегистрирован: 02 авг 2014, 01:28

rest

Сообщение dellby » 02 авг 2014, 01:52

Добрый день.

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

Спасибо.

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: rest

Сообщение Mikhail_dev » 02 авг 2014, 11:18

Я делаю синглтон и библиотеку 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/

dellby
Сообщения: 4
Зарегистрирован: 02 авг 2014, 01:28

Re: rest

Сообщение dellby » 03 авг 2014, 17:32

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

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: rest

Сообщение Mikhail_dev » 03 авг 2014, 22:02

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

Ответить