sách gpt4 ăn đã đi

java - 在 Android 应用程序中关闭 ByteArrayOutputStream

In lại 作者:搜寻专家 更新时间:2023-10-30 21:08:21 26 4
mua khóa gpt4 giày nike

在 Android 应用程序中,我正在发送从 Camera Intent 拍摄的照片,因此我需要将 Bitmap 转换为字节数组。为此,我使用了一个 ByteArrayOutputStream,如下所示:

private byte[] getRawImageData(Bitmap source) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] rawImageData = null;
thử {
source.compress(CompressFormat.JPEG, DEFAULT_COMRESSION, baos);
rawImageData = baos.toByteArray();
} Cuối cùng {
thử {
baos.close();
} bắt (IOException e) {
// handle exception here
}
}
return rawImageData;
}

一切正常,真正的问题是 javadoc 和 Android 文档之间 ByteArrayOutputStream 文档的区别。

Javadoc阅读

Closing a ByteArrayOutputStream has no effect.

Android doc阅读:

Closes this stream. This releases system resources used for this stream.

无论如何我都会关闭流,但我想知道哪个文档是正确的以及它们为何不同。

câu trả lời hay nhất

ByteArrayOutputStream 是一个基于内存的流(由用户在代码中管理和填充),因此当您对其调用 close() 时没有任何效果。清除其内存占用的唯一方法是撤销对该对象的所有引用。到那时,垃圾收集器将在未来的任何时间启动并完成清理此类对象的工作。

但是,当您使用文件或输入/输出套接字流(例如 Dòng đầu raDòng đầu vào)等资源时,需要关闭流。当您在此类流上调用 close() 时,JVM 会安全地释放它们的本地存储/占用内存并避免任何 OutOfMemory 问题。

所以一般来说,当不再需要任何类型的流时调用 close() 是好的(有时是重要的),但更重要的是,最好知道为什么应该我们打电话。

关于java - 在 Android 应用程序中关闭 ByteArrayOutputStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15381952/

26 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress