Я использую AsyncTask для выполнения HTTP GET на android. Это приводит к длительной задержке отправки моих данных в URL. Есть ли способ исправить тот или иной подход, который можно использовать?Использование AsyncTask для HTTP GET на android вызывает длительную задержку при отправке данных
Вот мой код: класс RequestTask расширяет AsyncTask {
@Override
protected String doInBackground(String... uri) {
HttpClient httpclient = new DefaultHttpClient();
HttpResponse response;
String responseString = null;
HttpParams httpParameters = httpclient.getParams();
HttpConnectionParams.setTcpNoDelay(httpParameters, true);
try {
response = httpclient.execute(new HttpGet(uri[0]));
StatusLine statusLine = response.getStatusLine();
if(statusLine.getStatusCode() == HttpStatus.SC_OK){
ByteArrayOutputStream out = new ByteArrayOutputStream();
response.getEntity().writeTo(out);
responseString = out.toString();
out.close();
} else{
//Closes the connection.
response.getEntity().getContent().close();
throw new IOException(statusLine.getReasonPhrase());
}
} catch (ClientProtocolException e) {
//TODO Handle problems..
} catch (IOException e) {
//TODO Handle problems..
}
return responseString;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
//Do anything with response..
}
}
А вот вызов:.
новый RequestTask() Execute ("http://10.10.10.211:9081/?modelname=model1&sourcedata=" + значения [1]);
'вызывает длинную задержку' определяет это и объясняет, как и как вы это наблюдаете, и/что заставляет вас думать, что это связано с использованием асинтезы – njzk2
Возможно ли, что ваша задача не работает в асинхронном режиме? Попробуйте запустить его у исполнителя через task.executeOnExecutor (AsyncTask.THREAD_POOL_EXECUTOR); Возможно, вы захотите реализовать что-то вроде http://stackoverflow.com/a/12160159/1426565, чтобы помочь с другими задачами, которые вы хотите запускать независимо. – Guardanis
. Задолгосрочно, я имею в виду, что для получения ответа требуется 9-10 секунд используя мое устройство Android. Когда я запускаю тот же запрос на своем компьютере с помощью Java-приложения, ответ почти мгновен. –