cannot access an invalid/free’d bitmap here!
  pldY3AmarceX 2023年11月28日 28 0


报错日志

2023-07-19 19:05:43.780 11493-11493/? A/DEBUG: Build fingerprint: 'rockchip/rk3326_go/rk3326_go:9/PQ2A.190305.002/root08251804:userdebug/test-keys'
2023-07-19 19:05:43.780 11493-11493/? A/DEBUG: Revision: '0'
2023-07-19 19:05:43.781 11493-11493/? A/DEBUG: ABI: 'arm'
2023-07-19 19:05:43.781 11493-11493/? A/DEBUG: pid: 11078, tid: 11078, name: .org.video_lock  >>> com.org.video_lock <<<
2023-07-19 19:05:43.781 11493-11493/? A/DEBUG: signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
2023-07-19 19:05:43.781 11493-11493/? A/DEBUG: Abort message: 'Error, cannot access an invalid/free'd bitmap here!'
2023-07-19 19:05:43.781 11493-11493/? A/DEBUG:     r0  00000000  r1  00002b46  r2  00000006  r3  00000008
2023-07-19 19:05:43.781 11493-11493/? A/DEBUG:     r4  00002b46  r5  00002b46  r6  ffd42644  r7  0000010c
2023-07-19 19:05:43.781 11493-11493/? A/DEBUG:     r8  e6d8b480  r9  00000000  r10 00000000  r11 ffd42b9c
2023-07-19 19:05:43.782 11493-11493/? A/DEBUG:     ip  ffd425e0  sp  ffd42630  lr  e8367e49  pc  e835fc96

之前看到这种崩溃日志的时候,我都要崩溃了,还好里面有关键信息,可以帮助排查cannot access an invalid/free’d bitmap here!


我出现这个问题的原因是bitmap 显示在dialog 上面,而在这个Dialog还未消失时,就调用 bitmap.recycle() 回收bitmap 造成的

所以 所以,一定确保bitmap不再使用,再去回收它
在以下情况下应该回收 bitmap:

  1. 当你确定不再需要 bitmap 时,比如在 Activity 或 Fragment 的 onDestroy() 方法中。
  2. 如果 bitmap 已经从 UI 中移除,不再显示在任何 UI 元素上。
  3. 当需要释放内存或减少资源占用时。

解决办法就是在Dialog 设置 setOnDismissListener 监听,消失的时候调用

// 回收 bitmap
        if (bitmap != null) {
            bitmap.recycle();
            bitmap = null;
        }


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月28日 0

暂无评论

推荐阅读
  anLrwkgbyYZS   2023年12月30日   14   0   0 ideciciMaxideMax
pldY3AmarceX