1.8MB の画像をバイトに変換してから暗号化し、最終的に文字列に変換するときにメモリ不足の例外に直面しています (ログに出力される長さは 1652328 です)。次に、この文字列を XML 形式に追加して投稿します。ここで、実際の問題が発生します。このpictureStringにいくつかのタグを追加している間StringBuffer
、またはStringBuilder
文字列に追加するか、メモリ不足の例外が発生しています。この問題を解決するにはどうすればよいですか?
小さな画像の場合、この問題は再現されません。
以下のコードは、パスの画像を に変換しpath
ますString
。
fis = new FileInputStream(path);
buffer = new byte[fis.available()];
try {
fis.read(buffer, 0, buffer.length);
String byteString =
com.mobile.android.components.Base64.encodeBytes(buffer);
return byteString;
} catch (IOException ex) {
}
上記byteString
は、次のように xml post に追加されます。
StringBuilder pictureName = new StringBuilder();
pictureName.append(byteString ); //here array out of bound at StringBuilder.extendBuffer
..........
appending continues
更新しました
上記の追加では、encodedbyteStream
は cypher AES を使用して暗号化されてから に追加されStringBuilder
ます。