Рассмотрите возможность использования библиотеки для упрощения базы кода. Я написал droidQuery, который, среди прочего, может быть использован для упрощения AsyncTask
. Например, чтобы получить JSON
данных из example.com
, и иметь доступ к связи после этого, вы можете сделать это:
$.ajax(new AjaxOptions().url("http://www.example.com")
.context(this)
.type("GET")
.dataType("json")
.success(new Function() {
@Override
public void invoke($ droidQuery, Object... params) {
JSONObject json = (JSONObject) params[0];
Context context = droidQuery.context();
//TODO:
}
})
.error(new Function() {
@Override
public void invoke($ droidQuery, Object... params) {
AjaxError error = (AjaxError) params[0];
Log.e("Ajax", "Error " + error.status + ": " + error.reason);
}
}));
Для большого количества различных запросов, которые вы называете много, вы также можете создавать экземпляры AjaxOptions
для последующего использования использования, которые имеют различные URL-адреса, типы, типы данных и т.д.:
Map<String, AjaxOptions> requests = new HashMap<String, AjaxOptions>();
//add the example above:
requests.put("example", new AjaxOptions().url("http://www.example.com")
.context(this)
.type("GET")
.dataType("json")
.success(new Function() {
@Override
public void invoke($ droidQuery, Object... params) {
JSONObject json = (JSONObject) params[0];
Context context = droidQuery.context();
//TODO:
}
})
.error(new Function() {
@Override
public void invoke($ droidQuery, Object... params) {
AjaxError error = (AjaxError) params[0];
Log.e("Ajax", "Error " + error.status + ": " + error.reason);
}
}));
потом, просто выполнить эту задачу по телефону:
$.ajax(requests.get("example"));
Вы должны используйте библиотеку наподобие Volley вместо нескольких асинтетов для сетевых запросов. – tbruyelle
Я согласен с помощником выше, или если вы хотите придерживаться AsyncTasks, используйте исполнителя ThreadPool! – Pavlos
AsyncTasks может быть выполнен в [исполнителе пула потоков] (http://developer.android.com/reference/android/os/AsyncTask.html#THREAD_POOL_EXECUTOR). Поскольку он является общедоступным, вы можете (ab) использовать его для других вещей. – zapl