HttpResponse 経由でエンコードされた JSON 文字列を取得しています。コードは次のようになります。
BasicResponseHandler brh = new BasicResponseHandler();
String responseString = brh.handleResponse(response);
String decoded = new String(Base64.decode(responseString, Base64.NO_CLOSE));
次のようなエラーが表示されます。
09-03 12:57:09.664: E/AndroidRuntime(8309): FATAL EXCEPTION: Thread-272
09-03 12:57:09.664: E/AndroidRuntime(8309): java.lang.OutOfMemoryError
09-03 12:57:09.664: E/AndroidRuntime(8309): at java.nio.CharArrayBuffer.<init>(CharArrayBuffer.java:43)
09-03 12:57:09.664: E/AndroidRuntime(8309): at java.nio.ReadWriteCharArrayBuffer.<init>(ReadWriteCharArrayBuffer.java:47)
09-03 12:57:09.664: E/AndroidRuntime(8309): at java.nio.CharBuffer.allocate(CharBuffer.java:54)
09-03 12:57:09.664: E/AndroidRuntime(8309): at java.nio.charset.CharsetDecoder.allocateMore(CharsetDecoder.java:236)
09-03 12:57:09.664: E/AndroidRuntime(8309): at java.nio.charset.CharsetDecoder.decode(CharsetDecoder.java:195)
09-03 12:57:09.664: E/AndroidRuntime(8309): at java.nio.charset.Charset.decode(Charset.java:487)
09-03 12:57:09.664: E/AndroidRuntime(8309): at java.lang.String.<init>(String.java:174)
09-03 12:57:09.664: E/AndroidRuntime(8309): at java.lang.String.<init>(String.java:141)
09-03 12:57:09.664: E/AndroidRuntime(8309): at xxx.DataManager.doPost(DataManager.java:448)
09-03 12:57:09.664: E/AndroidRuntime(8309): at xxx.DataManager.run(DataManager.java:185)
時々私はそれを手に入れます
brh.handleResponse(response);
時々オン
String decoded = new String(Base64.decode(responseString, Base64.NO_CLOSE));
したがって、文字列が大きすぎて処理できないと思います(サイズをバイト単位で決定する方法がわかりません)。これを回避するにはどうすればよいですか?