这类问题的分析,通常你需要找到bitmap对象已经在那个位置recyle,然后检查代码。

如何定位的位置,其中代码具有对bitmap 目的recyle。能够 Bitmap.java的recycle方法,加log打印call stack要找到。

 

详细的改动參考例如以下:

 

 public void recycle() {

        if (!mRecycled) {

            if (nativeRecycle(mNativeBitmap)) {

                // return value indicates whether native pixel object was actually recycled.

                // false indicates that it is still in use at the native level and these

                // objects should not be collected now. They will be collected later when the

                // Bitmap itself is collected.

                mBuffer = null;

                mNinePatchChunk = null;

            }

            mRecycled = true;

           

            log.e("bitmap recyle! ", "this = " + this ,new Throwable("recycle"));





        }

    }

 

然后在抛 java.lang.IllegalArgumentException: Cannot draw recycled bitmaps 异常的地方,也将bitmap 对象打印出来。 抓取复现问题的mobile log 分析。

比如例如以下的log:

 

在main log中搜索“FATAL EXCEPTION”看到发生fatal error exception的 trace例如以下。相应的bitmap对象为 android.graphics.Bitmap@4218d0c8

01-01 08:03:23.841  2369  2369 D AndroidRuntime: Shutting down VM

01-01 08:03:23.841  2369  2369 W dalvikvm: threadid=1: thread exiting with uncaught exception (group=0x40f979a8)

01-01 08:03:23.856  2369  2369 E AndroidRuntime: FATAL EXCEPTION: main

01-01 08:03:23.856  2369  2369 E AndroidRuntime: java.lang.IllegalArgumentException: Cannot draw recycled bitmapsandroid.graphics.Bitmap@4218d0c8

然后再在main log中搜索keyword “@4218d0c8” ,就能够看到该对象被recyle的call stack

 

01-01 08:03:22.741  2369  2369 E bitmap recyle! : this = android.graphics.Bitmap@4218d0c8

01-01 08:03:22.741  2369  2369 E bitmap recyle! : java.lang.Throwable: recycle

01-01 08:03:22.741  2369  2369 E bitmap recyle! :  at android.graphics.Bitmap.recycle(Bitmap.java:214)

01-01 08:03:22.741  2369  2369 E bitmap recyle! :  at com.xxx.xxxx.xxxActivity.onDestroy(xxxActivity.java:190)

01-01 08:03:22.741  2369  2369 E bitmap recyle! :  at android.app.Fragment.performDestroy(Fragment.java:1908)

......

android 如何分析java.lang.IllegalArgumentException: Cannot draw recycled bitmaps异常的更多相关文章

  1. Android IllegalArgumentException: Cannot draw recycled bitmaps解决方法

    在编码图集过程中,出现了Android IllegalArgumentException: Cannot draw recycled bitmaps错误. 大致意思是:不能使用已经被回收的bitmap ...

  2. [Android]Caused by: java.lang.IllegalArgumentException: Service not registered.md

    Caused by: java.lang.IllegalArgumentException: Service not registered: org.diql.aidldemo.MainActivit ...

  3. [zhuan]Android 异常处理:java.lang.IllegalArgumentException(...contains a path separator)

    http://blog.csdn.net/alex_zhuang/article/details/7340901 对以下错误: Java.lang.RuntimeException: java.lan ...

  4. 登录首页时报错:java.lang.IllegalArgumentException (不合法的参数异常)

    处理一个老项目,DOWN下项目并配好之后,启动没问题,但是登陆之后首页显示如下: 控制台报错如下: 严重: Servlet.service() for servlet jsp threw except ...

  5. Android Caused by: java.lang.IllegalArgumentException: column '_id' does not exist

    出错原因:在查询整个sqlite数据库时,没有查询到 "_id" 这一列. 原来的代码是:mSQLiteDatabase.query(table_name, new String[ ...

  6. 关于dialog引起的 java.lang.IllegalArgumentException: View=com.android.internal.policy.impl.PhoneWindow$DecorView not attached to window manager 错误的分析

    在跑Monkey测试的时候出现了一个比较特别的问题,先来看看Log: // CRASH: com.meizu.media.painter (pid 12491) // Short Msg: java. ...

  7. 关于java.lang.IllegalArgumentException: View not attached to window manager 错误的分析

    今天遇到一个很奇特的问题,当用户设置了PIN码,在锁屏界面正常解锁PIN码后,进入Launcher时显示com.android.phone 已停止运行.一开始猜想会不会是解锁PIN码的时候处理导致了P ...

  8. [Android] View.setTag(key,Object) (java.lang.IllegalArgumentException: The key must be an application-specific resource id.)

    转自: http://blog.csdn.net/brokge/article/details/8536906 setTag是android的view类中很有用的一个方法,可以用它来给空间附加一些信息 ...

  9. java.lang.IllegalArgumentException: Requested window android.os.BinderProxy@450b2f48 异常处理

    晕死的错误,改了半天也没想到是这样的原因,基础正要呀... 先看一下警告信息: 07-07 08:32:19.540: WARN/WindowManager(74): Failed looking u ...

随机推荐

  1. 10881 - Piotr's Ants

    Problem D Piotr's Ants Time Limit: 2 seconds "One thing is for certain: there is no stopping th ...

  2. 条款38 通过复合塑膜出has-a或"依据某物实现"

    结论: 复合的意义和public继承全然不同. (public继承參考:条款32 确定你的public继承塑模出is-a关系) 在应用域,复合意味着has-a(有一个).在实现域,复合意味着is-im ...

  3. linux内核编译环境配置

    linux内核编译环境配置 如果不是编译内核,只需要安装与内核相匹配的kernel-devel开发包即可.即是/lib/modules/`uname -r`/build -> /usr/src/ ...

  4. centos下chm阅读器

    xchm kchmviewer chmsee

  5. js动态添加Div

    利用JavaScript动态添加Div的方式有很多,在这次开发中有用到,就搜集了一下比较常用的. 一.在一个Div前添加Div <html> <body> <div id ...

  6. drupal 7 模块开发,hook_form

    因为不是系统学习,只能把每天自己学习到的东西零碎的记录下来. 一来方便自己记忆,二来可供大家查阅. 后续有精力再去做进一步的整理. 1 开发一个模块分为有下面几个文件 hook.admin.inc h ...

  7. MySQL触发器 trigger之for each row

    for each row 每行受影响,触发器都运行.叫行级触发器. oracle 触发器中分行级触发器和语句级触发器,可不写for each row,不管影响多少行都仅仅运行一次. mysql不支持语 ...

  8. Design Pattern Memo 备忘录设计模式

    本设计模式就是简单地记录当前状态.然后利用记录的数据恢复. 比方首先我们有一个类.类须要记录当前状态进行相关的工作的: class Memo; class Human { public: string ...

  9. mahout入门指南之基于mahout的itembased算法

    基于mahout的itembased算法 事实上mahout分布式上仅仅是实现了部分算法.比方推荐算法中Item-based和slopone都有hadoop实现和单机版实现,User-based没有分 ...

  10. 【OpenCV新手教程第14】OpenCVHough变换:霍夫变换线,霍夫变换圆汇编

    本系列文章由@浅墨_毛星云 出品.转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/26977557 作者:毛星云(浅墨) ...