0

我有一个活动,比如说 Activity1,我通过从该活动启动这些默认活动来从相机或库中获取图像。

我通过该onActivityResult方法完美地获取图像。此方法在Activity1.

现在,我将检索到的图像放在Activity1启动Intent.putExtra(...)Activity2。我通过以下代码启动活动..

//Bitmap handle in Activity1. This holds the bitmap retrieved from camera or gallery.
Bitmap my_bitmap_image;

//Now, on click of a button in Activity1
Intent intent = new Intent(this,Activity2.class);
intent.putExtra("MyBitmapImage",this.my_bitmap_image);
this.startActivity(intent);

现在,奇怪的事情发生了。当我随时通过相机获取位图时,Activity2 会从上面的代码中正确启动。但是,如果我随时通过图库获取位图,则 Activity2 永远不会从上述代码启动。没有错误,什么都没有。似乎代码什么都不做。这可能是什么?任何人都可以帮忙吗?

4

1 回答 1

0

当你在执行

intent.putExtra("MyBitmapImage",this.my_bitmap_image);

您正在利用这样一个事实,即 a可以Bitmap通过Parcelable它放入Intent. 根据位图的源代码(搜索writeToParcel),Bitmap如果是,则无法打包recycled。在我看来,画廊中的图像很有可能被回收利用。

解决方案是制作自己的Bitmapifbitmap.isRecycled()返回 true 的副本。immuatble 也可能存在问题Bitmap,但我无法证明这一点。

于 2013-06-08T13:26:00.580 回答