URL url = new URL(urlStr);
URLConnection conn = url.openConnection();
// Get the response
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()),1024*32);
StringBuffer sb = new StringBuffer();
String line;
while ((line = rd.readLine()) != null) {
sb.append(line.replace(" ", ""));
}
rd.close();
result = sb.toString();
Я подозреваю, что это факт, что создается слишком много строк. Как я могу видеть, возможна ли readline и вставлять перевод строки прямо в stringbuilder. Какой еще способ сделать это? Файл размером чуть менее 1 МБ
Вот лог:
09-27 12: 56: 07.740: ОШИБКА / ОШИБКА: проблема в LDataListView: refreshError
09-27 12: 56: 07.740: ОШИБКА / ERROR: ------------------------------------- ------
09-27 12: 56: 13.339: ОШИБКА / Dhcpcd (10598): отправка DHCP_REQUEST с xid 0x5a93b3de, следующая через 3,58 секунды
09-27 12: 56: 13.549: ОШИБКА / dalvikvm-heap (12862): Недостаточно памяти при выделении 6064234 байта.
09-27 12: 56: 13.549: ОШИБКА / dalvikvm (12862): Недостаточно памяти: Размер кучи = 15687 КБ, Выделено = 6704 КБ, Размер растрового изображения = 8617 КБ
09-27 12: 56: 13.559: ОШИБКА / AndroidRuntime (12862): ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: основное
09-27 12: 56: 13.559: ОШИБКА / AndroidRuntime (12862): java.lang.OutOfMemoryError
09-27 12: 56: 13.559: ОШИБКА / AndroidRuntime (12862): на java.lang.AbstractStringBuilder.enlargeBuffer (AbstractStringBuilder.java:97)
09-27 12: 56: 13.559: ОШИБКА / AndroidRuntime (12862): на java.lang.AbstractStringBuilder.append0 (AbstractStringBuilder.java:117)
09-27 12: 56: 13.559: ОШИБКА / AndroidRuntime (12862): на java.lang.StringBuilder.append (StringBuilder.java:250)
09-27 12: 56: 13.559: ОШИБКА / AndroidRuntime (12862): по адресу se.brickit.foundation.data.BrHttpClient.sendGetRequest (BrHttpClient.java:56)
09-27 12: 56: 13.559: ОШИБКА / AndroidRuntime (12862): по адресу se.brickit.foundation.data.BrDataProvider. (BrDataProvider.java:100)
09-27 12: 56: 13.559: ОШИБКА / AndroidRuntime (12862): на se.brickit.foundation.iviews.LisaDataListView $ RefreshTask.onPostExecute (LisaDataListView.java:110)
09-27 12: 56: 13.559: ОШИБКА / AndroidRuntime (12862): в se.brickit.foundation.iviews.LisaDataListView $ RefreshTask.onPostExecute (LisaDataListView.java:1)
09-27 12: 56: 13.559: ОШИБКА / AndroidRuntime (12862): на android.os.AsyncTask.finish (AsyncTask.java:417)
09-27 12: 56: 13.559: ОШИБКА / AndroidRuntime (12862): на android.os.AsyncTask.access $ 300 (AsyncTask.java:127)
09-27 12: 56: 13.559: ОШИБКА / AndroidRuntime (12862): на android.os.AsyncTask $ InternalHandler.handleMessage (AsyncTask.java:429)
09-27 12: 56: 13.559: ОШИБКА / AndroidRuntime (12862): на android.os.Handler.dispatchMessage (Handler.java:99)
09-27 12: 56: 13.559: ОШИБКА / AndroidRuntime (12862): на android.os.Looper.loop (Looper.java:144)
09-27 12: 56: 13.559: ОШИБКА / AndroidRuntime (12862): на android.app.ActivityThread.main (ActivityThread.java:4937)
09-27 12: 56: 13.559: ОШИБКА / AndroidRuntime (12862): на java.lang.reflect.Method.invokeNative (собственный метод)
09-27 12: 56: 13.559: ОШИБКА / AndroidRuntime (12862): в java.lang.reflect.Method.invoke (Method.java:521)
09-27 12: 56: 13.559: ОШИБКА / AndroidRuntime (12862): на com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:868)
09-27 12: 56: 13.559: ОШИБКА / AndroidRuntime (12862): на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:626)
09-27 12: 56: 13.559: ОШИБКА / AndroidRuntime (12862): в dalvik.system.NativeStart.main (собственный метод)
09-27 12: 56: 14.819: ОШИБКА / ActivityManager (101): не удалось установить главное приложение изменено!
09-27 12: 56: 48.499: ОШИБКА / Служба BluetoothHeadset (201): java.util.NoSuchElementException
Редактирование :::
больше информации:
Это строка JSON. в основном один объект с массивом элементов. Весь канал изобилует закодированными изображениями, что делает его намного больше, чем должно быть (к сожалению, это не мой канал). кажется, что iphone читает его, но мой телефон HTC иногда делает это, но обычно попадает в исключение памяти в строке добавления sb.
Я также попробовал просто прочитать его, например:
URL url = new URL(urlStr);
URLConnection conn = url.openConnection();
InputStream iFile = conn.getInputStream();
result = inputStreamToString(iFile);
но та же проблема там тоже.