关于android相机开发中遇到的内存溢出的问题

原创
2013/09/08 18:47
阅读数 2.1K
BitmapFactory时务必要尽快的使用Bitmap.recycle();
方法进行内存回收,
在java中,一般都很少有内存回收的说法,但偏偏这里出现这方法,说明这方法的重要性,使用了这方法,就没出现过内存溢出了!!
@Override
		public void onPictureTaken(byte[] data, Camera camera) {
			// TODO Handle JPEG image data
			// 解码一个不可变的位图 从指定的字节数组
			cameraBitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
			SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss");
			
			Date curDate = new Date(System.currentTimeMillis());// 获取当前时间
			String filetime = "IMG" + formatter.format(curDate) + ".jpg";
			File sdcard = new File(Environment.getExternalStorageDirectory(),
					"MyCamera");
			if (!sdcard.exists())
				sdcard.mkdir();
			File myCaptureFile = new File(sdcard, filetime);
			try {
				BufferedOutputStream bos = new BufferedOutputStream(
						new FileOutputStream(myCaptureFile));
				// 压缩位图到指定的OutputStream
				cameraBitmap.compress(Bitmap.CompressFormat.JPEG, 80, bos);
				// 刷新此缓冲区的输出流
				cameraBitmap.recycle();
				//务必使用该方法回收内存
				bos.flush();
				// 关闭此输出流并释放与此流有关的所有系统资源
				bos.close();
				Toast.makeText(ct, "成功", Toast.LENGTH_LONG).show();
			} catch (Exception e) {
				e.getMessage();
				Toast.makeText(ct, "失败", Toast.LENGTH_LONG).show();
			}
			camera.startPreview();
		}
	};

 

展开阅读全文
打赏
0
2 收藏
分享
加载中
更多评论
打赏
0 评论
2 收藏
0
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部