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 が可能かどうかを確認し、lineread を stringbuilder に直接挿入するにはどうすればよいですか。これを行うには他にどのような方法がありますか?ファイルは1MB弱
ログは次のとおりです。
09-27 12:56:07.740: エラー/エラー: LDataListView の問題: refreshError 09-27 12:56:07.740: エラー/エラー: ------------------- ------------------------ 09-27 12:56:13.339: エラー/Dhcpcd(10598): xid 0x5a93b3de で DHCP_REQUEST を送信、次は 3.58 秒09-27 12:56:13.549: エラー/dalvikvm-heap(12862): 6064234 バイトの割り当てでメモリが不足しています。09-27 12:56:13.549: エラー/dalvikvm(12862): メモリ不足: ヒープ サイズ = 15687KB、割り当て済み = 6704KB、ビットマップ サイズ = 8617KB 09-27 12:56:13.559: エラー/AndroidRuntime(12862): FATAL例外: メイン 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. エラー/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: ERROR/ActivityManager(101): トップ アプリの設定に失敗しました! 09-27 12:56:48.499: エラー/BluetoothHeadsetService(201): java.util.NoSuchElementException
編集:::
より詳しい情報:
これは JSON 文字列です。基本的に、アイテムの配列を持つ単一のオブジェクトです。フィード全体にエンコードされた画像が散らばっているため、必要以上に大きくなっています (残念ながら、これは私のフィードではありません)。iphone はそれを読み取っているように見えますが、私の HTC 電話は時々読み取りますが、通常は sb 追加行でメモリ例外に遭遇します。
私はまた、それをまっすぐ読んでみました:
URL url = new URL(urlStr);
URLConnection conn = url.openConnection();
InputStream iFile = conn.getInputStream();
result = inputStreamToString(iFile);
しかし、そこにも同じ問題があります。