Android - 在临时文件中存储图像 cross-activity

Android - store image on a temp file cross-activity

在我正在开发的应用程序中,我有一个 activity,其中我显示了两个由两个位图 ca.bm 和 [=14] 组成的 ImageViews =] 分别。它在我的设备上运行良好,但在尝试将原始位图复制到我稍后将修改的位图时,在某些设备上会产生 OutOfMemoryError

ca.tempBm = Bitmap.createBitmap(ca.bm);   // out of memory error

我想创建一个临时文件来保存原始图像并使用单个位图,但是从相机 Activity 更改为下一个 activity 并且只有在第二个 activity 被销毁时才应该被销毁。

我怎样才能做到这一点?

您可以将位图写入缓存目录:

FileOutputStream outStream = new FileOutputStream(new File(getCacheDir(), "tempBMP"));
myBitmap.compress(Bitmap.CompressFormat.JPEG, 75, outStream);
outStream.close();

然后读回:

Bitmap myBitmap = BitmapFactory.decodeFile(bitmapPath.getAbsolutePath());

但是您最好通过创建较小的位图来节省内存,将较大的位图绘制到较小的位图 canvas,然后在活动之间传递较小的位图。