#android
#Android
Вопрос:
Я использую следующий код для извлечения некоторого текста с http-сервера. Размер составляет менее 1 КБ и генерируется за 0,002 миллисекунды
Однако восстановление данных может занять 600 мс, но в основном от 2000 до 5000 мс.
используется следующий код:
long starttime = System.currentTimeMillis();
StringBuffer SB = new StringBuffer();
Common.toLog("101 took " (System.currentTimeMillis() - starttime) " ms");
try {
URL url = new URL(Common.server request);
Common.toLog("102 took " (System.currentTimeMillis() - starttime) " ms");
InputStreamReader ISR = new InputStreamReader(url.openStream());
Common.toLog("102a took " (System.currentTimeMillis() - starttime) " ms");
BufferedReader in = new BufferedReader(ISR);
Common.toLog("103 took " (System.currentTimeMillis() - starttime) " ms");
String inputLine;
while ((inputLine = in.readLine()) != null) {
SB.append(inputLine);
}
in.close();
Common.toLog("105 took " (System.currentTimeMillis() - starttime) " ms");
} catch (IOException e)
{
Common.toLog("Could not make connection 1");
showMSG(R.string.ERROR_NO_INTERNET, true);
}
Наиболее трудоемкий метод находится между точкой регистрации 102 и точкой 102a. При использовании Chrome я могу загрузить страницу в течение 300-350 мс. Я хотел бы знать, есть ли более эффективный способ извлечения этих данных
Ответ №1:
Данные, которые вы извлекаете, на самом деле не такие длинные. Вместо того, чтобы открывать поток чтения по URL, попробуйте использовать одну из реализаций HttpRequest:
http://developer.android.com/reference/org/apache/http/HttpRequest.html
Таким образом, выполняется один запрос, и ваши данные возвращаются в ответе. Например, вы могли бы попробовать запрос HttpGet:
HttpGet httpGet = new HttpGet(url);
HttpClient httpclient = new DefaultHttpClient();
// Execute HTTP Get Request
HttpResponse response = httpclient.execute(httpGet);
content = response.getEntity().getContent();
Комментарии:
1. Это лучше, чем раньше, используя следующий скрипт: androidforums.com/application-development/… Однако: время ответа на первый запрос по-прежнему занимает 1600 мс, по сравнению с /- 700 секундами для следующего запроса