我有以下问题:
安卓相机已经打开,用户可以拍照。一旦拍照完成,第二个活动将会启动。
在这个活动中,用户有可能查看照片。为此,我从第一个活动中获取图片,就像这样:
在这个活动中,用户可以以不同的大小查看图片。图片来自
最大的问题是当用户在活动
如果我不在第二个活动中回收位图,当我通过应用程序上下移动几次时,我会遇到
有任何想法吗?
First activity
安卓相机已经打开,用户可以拍照。一旦拍照完成,第二个活动将会启动。
Second activity
在这个活动中,用户有可能查看照片。为此,我从第一个活动中获取图片,就像这样:
在本活动中,用户有可能查看照片。因此,我从第一个活动中接收到图片,如下所示:
Bundle extras = getIntent().getExtras();
我创建了以下位图:
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 5;
options.inDither = true;
byte[] imageData = extras.getByteArray("imageData");
myImage = BitmapFactory.decodeByteArray(imageData, 0,
imageData.length, options);
Matrix mat = new Matrix();
mat.postRotate(90);
bitmapResult = Bitmap.createBitmap(myImage, 0, 0, myImage.getWidth(),
myImage.getHeight(), mat, true);
//...operations on the bitmapResult
将结果位图存储到sdcard
中,在离开此活动之前,回收位图以避免内存问题:
bitmapResult.recycle();
bitmapResult=null;
在完成所有这些步骤之后,我们继续进行第三个活动。
Third activity
在这个活动中,用户可以以不同的大小查看图片。图片来自
sdcard
。最大的问题是当用户在活动
three
中按下返回按钮时,会进入活动two
,但我的应用程序会崩溃,因为它尝试对已被回收的位图执行操作。如果我不在第二个活动中回收位图,当我通过应用程序上下移动几次时,我会遇到
OutOfMemory Exception
。有任何想法吗?