这类问题的分析,通常你需要找到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. 正則表達式验证邮箱,qq,座机,手机,网址

    手机: var reg=/^1[34578]\d{9}$/; if(reg.test("你输入的手机号码") ) { alert("手机号码输入正确") } e ...

  2. Python之常用模块(待更新)

    模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才 ...

  3. Windows调试工具入门—1

    NetRoc http://www.DbgTech.net 引子 Debugging Tools for Windows是微软发布的一套用于软件调试的工具包(后面如果没有指明,那么我会使用WinDbg ...

  4. extjs表单

      Ext.onReady(function(){ Ext.BLANK_IMAGE_URL = '../ext/resources/images/default/s.gif'; Ext.QuickTi ...

  5. [Android学习笔记]jackson库的使用

    Jackson库一般用于序列化和反序列化操作,通常会涉及到的操作是: 1. Java Object -> Json String 2. Java Object -> Xml String ...

  6. 【PostgreSQL】PostgreSQL语法

    在阅读的过程中有不论什么问题.欢迎一起交流 邮箱:1494713801@qq.com    QQ:1494713801 一.PostgreSQL时间类型转换 --时间类型转成字符类型 select t ...

  7. 更改Oracle实例的字符集

    (1).数据库服务器字符集select * from nls_database_parameters 来源于props$,是表示数据库的字符集. (2).服务端字符集环境select * from n ...

  8. android 在特殊应用的特殊功能,以帮助通信系统的问题

    在实际工程中的应用,进入一个特殊的应用后,系统的某个功能不能起作用. 当然,这个通信有非常多办法能够做到.笔者能够想到的至少有例如以下几种 1.利用property熟悉来实现,这种话须要添加一个特殊的 ...

  9. NYOJ 284 坦克大战 【BFS】+【优先队列】

    坦克大战 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描写叙述 Many of us had played the game "Battle city" ...

  10. class 添加样式,删,开关 【选择】addClass,removeClass,toggleClass

    <1> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>< ...