Я работаю с http-based API и хочу знать, когда я сталкиваюсь с любыми ошибками. Я использую Android-запрос (заглушки):Как определить, когда не удалось выполнить обратный вызов Android-запроса?
AjaxCallback<JSONObject> cb = new AjaxCallback<JSONObject>() {
@Override
public void callback(String url, JSONObject json, AjaxStatus status) {
try {
if (json != null) {
if (json.getString("authenticated") != "true")
// An error, but status=200 and json!=null
} catch (JSONException e) { errors... } } };
И я использую это так:
final AQuery aq = new AQuery(this);
aq.ajax(url, JSONObject.class, cb);
cb.block();
Мои вопросы:
- Я обнаружил, что использование
cb.block()
- единственный способ заставить библиотеку работать синхронно, но я не уверен, что это лучший способ (похоже, это не так). - Метод обратного вызова не может генерировать исключения, не может возвращать что-либо (void) и т. Д., Так что лучший способ обработки ошибок? Я заметил, что он поддерживает
cb.getResult()
, но похоже, что вызов этого метода приводит к возврату внешнего блока (я не могу его объяснить).
Спасибо.
'блок()' плохой способ, m'kay ... [обратный вызов терпит неудачу, когда 'json' является нулевым] (https://code.google.com/p/android-query/# JSON_Example) ... я не уверен, но вы также можете проверить 'status' – Selvin
@Selvin Любое предложение вместо block()? Я хочу дождаться завершения транзакции и позволить UI знать, что у нее есть объекты для отображения. – asafge
введите свой код в 'AjaxCallback > .callback (...)' – Selvin