虽然Android有自己的垃圾回收机制,对于是不是要我们自己调用recycle,还的看情况而定。如果只是使用少量的几张图片,回收与否关系不大。可是若有大量bitmap需要垃圾回收处理,那必然垃圾回收需要做的次数就更多也发生地更频繁,会对系统资源造成负荷。所以,这个时候还是自己试用recycle来释放的比较好。

    如何去使用recycle()方法和何时试用recycle()都是值得考虑的问题。否侧,极易出现下面的异常:

05-15 08:31:00.117: E/AndroidRuntime(513): java.lang.RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap@44c093b8
java运行时异常:试图使用一个已经回收了的图片


  只有当你确认你不会在使用这个bitmap的时候,就可以选择调用recycle()方法释放它。

  今天在做个小测试的时候,就因为recycle()的调用出现了异常。原因是:

在xml文件中,ImageView有两个方法来设置一张显示的图片:

 android:background="@drawable/aa" android:src="@drawable/aa"

刚开始,我使用background,然后在程序中,这样设置

                        // 获得ImageView当前显示的图片Bitmap bitmap1 = ((BitmapDrawable) imageView.getBackground()).getBitmap();Bitmap bitmap2 = Bitmap.createBitmap(bitmap1, 0, 0, bitmap1.getWidth(),bitmap1.getHeight(), matrix, true);// 如果图片还没有回收,强制回收if (!bitmap1.isRecycled()) {bitmap1.recycle();}// 根据原始位图和Matrix创建新的图片imageView.setImageBitmap(bitmap2);

因为imageView.setImageBitmap()方法设置的是对应的src的图片,而不是background。而我却把background的图片给回收了。这样,就导致了异常的发生。

所以修改成如下的代码,去调用setBackGround()方法

                       // 获得ImageView当前显示的图片Bitmap bitmap1 = ((BitmapDrawable) imageView.getBackground()).getBitmap();Bitmap bitmap2 = Bitmap.createBitmap(bitmap1, 0, 0, bitmap1.getWidth(),bitmap1.getHeight(), matrix, true);// 如果图片还没有回收,强制回收if (!bitmap1.isRecycled()) {bitmap1.recycle();}// 根据原始位图和Matrix创建新的图片//imageView.setImageBitmap(bitmap2);imageView.setBackgroundDrawable(new BitmapDrawable(bitmap2));

所以,一定要注意ImageView图片的来源问题,然后在进行相应的recycle。


更多相关文章

  1. Android(安卓)APP欢迎界面小试身手
  2. 基于 Android(安卓)NDK 的学习之旅----- C调用Java(附源码)
  3. Android(安卓)兼容性介绍之setBackground
  4. Gallery控件初体验——简单的相册
  5. ANDROID缩略图Thumbnails
  6. 摄像头的使用之(Camera的使用)
  7. android 拍照的照片方向问题,读取图片EXIF信息
  8. Android获取并显示图片
  9. 教你快速实现Android动态模糊效果

随机推荐

  1. linearLayout 和 relativeLayout的属性区
  2. android的消息处理机制(图+源码分析)——Lo
  3. Android的UI结构试图工具hierarchyviewer
  4. 详解android:scaleType属性
  5. Android(安卓)Activity动画属性简介
  6. Android(安卓)API中文文档(111) —— Mai
  7. android:layout_marginLeft等的简单用法
  8. Android(安卓)API中文文档系列Manifest
  9. android中adb命令大全
  10. 【android乱七八糟】android体系结构