Androidアプリケーションでは、Camera Intent
から取得した画像を送信していますので、Bitmap
をバイト配列に変換する必要があります。これを行うために、私は次のようにByteArrayOutputStream
を使用します。AndroidアプリケーションでByteArrayOutputStreamを閉じる
private byte[] getRawImageData(Bitmap source) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] rawImageData = null;
try {
source.compress(CompressFormat.JPEG, DEFAULT_COMRESSION, baos);
rawImageData = baos.toByteArray();
} finally {
try {
baos.close();
} catch (IOException e) {
// handle exception here
}
}
return rawImageData;
}
すべてが正常に動作し、すべてが、本当の問題は、javadocのとAndroidからのドキュメント間のByteArrayOutputStream
のドキュメントの差です。
JavadocはByteArrayOutputStream効果がありませんを閉じる
を読み出します。
Android doc読み取り:
は、このストリームを閉じます。これにより、このストリームに使用されるシステムリソースが解放されます。
ストリームは、何を問わずにクローズしていますが、どのドキュメンテーションが正しいのか、その理由は何かを知りたいと思います。
最初と2番目は正しいです、outputstremの実装に依存し、baosを閉じる、何もしません。しかし、どこから来ても常にストリームを閉じるのが良い方法です。 – epoch
'close'が呼び出されたとき、バイト配列の基礎となるストリームに何が起こるか心配していますか? – Perception
@epochただし、問題は次のとおりです。**何もしないときにこのストリームを閉じる必要があるのはなぜですか?** – waqaslam