Я читаю данные с сервера REST. по случаю я получаю очень большие задержки, но после общения:Async task long delay on reading getEntity()
protected JSONObject doInBackground(String... params)
...
HttpResponse response;
client = new DefaultHttpClient();
...
HttpPost post = new HttpPost(sendURL);
StringEntity se = new StringEntity(postJSON.toString(), "UTF-8");
Log.d(getClass().getName(), String.format("post object: %s", postJSON.toString()));
se.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
post.setEntity(se);
response = client.execute(post);
Log.d(getClass().getName(), "Response received");
if(response!=null){
String responseStr = null;
if (response.getStatusLine().getStatusCode() == 200){
try {
Log.d(getClass().getName(), "Response status OK");
responseStr = EntityUtils.toString(response.getEntity());
Log.d(getClass().getName(), "Response String read: "
...
В случайные промежутки времени задача занимает очень много времени, чтобы закончить, создавая неприемлемый опыт пользователя. Временные метки в журнале показывают, что вызов response.getEntity() занимает очень много времени, 30 секунд и более. Такие вопросы, как this, показывают, что вызов метода getEntity() действительно связан с сетевой связью. Это так? Или происходит задержка, потому что AsyncTask не получает ресурсы?
Насколько велика ваша сущность? Как быстро ваш сервер? – 323go
Задержка не зависит от размера ответа. Поскольку я работаю с одним сервером, его отзывчивость как таковая не является проблемой. Его рабочая нагрузка в любой момент времени может быть проблемой, предполагая, что getEntity все еще является частью процесса коммуникации. Это действительно вопрос. –
Да, 'getEntity()' все еще является частью процесса связи. – 323go