Android IllegalArgumentException: Cannot draw recycled bitmaps解决方法

本文介绍了在Android应用开发中遇到的Cannot draw recycled bitmaps错误及其解决方案。该错误通常发生在试图绘制已被回收的Bitmap时。通过重写ImageView的OnDraw方法并捕获异常来避免应用程序崩溃。

在编码图集过程中,出现了Android IllegalArgumentException: Cannot draw recycled bitmaps错误。

大致意思是:不能使用已经被回收的bitmap。

bitmap回收部分代码如下:

1 Bitmap removeBitmap = softReference.get();  
2 if(removeBitmap != null && !removeBitmap.isRecycled()){  
3     removeBitmap.recycle();
4     removeBitmap = null;  
5 } 

解决方法:

重写ImageView中的OnDraw方法,捕获此异常。

复制代码
 1 public class MyImageView extends ImageView {  
 2   
 3     public MyImageView (Context context, AttributeSet attrs) {  
 4         super(context, attrs);  
 5     }  
 6   
 7     @Override  
 8     protected void onDraw(Canvas canvas) {  
 9         try {  
10             super.onDraw(canvas);  
11         } catch (Exception e) {  
12             System.out.println("trying to use a recycled bitmap");  
13         }  
14     }  
复制代码

 

---------------------------------------------------------------------------------
笔者水平有限,若有错漏,欢迎指正,如果转载以及CV操作,请务必注明出处,谢谢!

本文转自Windstep博客园博客,原文链接:http://www.cnblogs.com/lwbqqyumidi/p/3407626.html,如需转载请自行联系原作者
引用\[1\]中的错误是因为在使用SimpleDateFormat的format函数时,传入的参数类型不正确。format函数只能接受Date类型的参数,而不能接受其他类型的对象。因此,需要将参数转换为Date类型后再进行格式化。 引用\[2\]中提供了一个小工具类TimeUtil,其中包含了一个将字符串时间格式转换成Date时间格式的方法StringToDate。可以使用这个方法将字符串时间转换为Date类型,然后再使用SimpleDateFormat的format函数进行格式化。 引用\[3\]中给出了解决这个问题的具体方法。首先,将状态中的字符串时间转换为Date类型,然后再使用SimpleDateFormat的format函数进行格式化。具体代码如下: ```java firstVisitState = getRuntimeContext().getState(new ValueStateDescriptor<String>("firstVisitState", String.class)); sdf = new SimpleDateFormat("yyyy-MM-dd"); Date date = sdf.parse(firstVisitState.value() == null ? "1970-01-01 00:00:00" : firstVisitState.value()); String yesterday = sdf.format(date); ``` 这样就可以避免IllegalArgumentException: Cannot format given Object as a Date的错误。 #### 引用[.reference_title] - *1* *3* [[Flink开发总结]java.lang.IllegalArgumentException: Cannot format given Object as a Date](https://blog.youkuaiyun.com/LangLang1111111/article/details/121642340)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [java.lang.IllegalArgumentException: Cannot format given Object as a Date](https://blog.youkuaiyun.com/weixin_30301449/article/details/95104447)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值