java.lang.IllegalArgumentException及at android.view.Surface.nativeUnlockCanvasAndPost(Native Method)

android控制器异常:

10-16 16:16:03.872: E/AndroidRuntime(1685): FATAL EXCEPTION: Thread-1090

 

10-16 16:16:03.872: E/AndroidRuntime(1685): java.lang.IllegalArgumentException
10-16 16:16:03.872: E/AndroidRuntime(1685): at android.view.Surface.nativeUnlockCanvasAndPost(Native Method)
10-16 16:16:03.872: E/AndroidRuntime(1685): at android.view.Surface.unlockCanvasAndPost(Surface.java:467)
10-16 16:16:03.872: E/AndroidRuntime(1685): at android.view.SurfaceView$4.unlockCanvasAndPost(SurfaceView.java:940)
10-16 16:16:03.872: E/AndroidRuntime(1685): at zbhx.config.PaintVedio.run(PaintVedio.java:104)

 

10-16 16:16:03.872: E/AndroidRuntime(1685): at java.lang.Thread.run(Thread.java:838)

如何出现:

在使用画布绘制动画特效的时候点击手机菜单键盘back键会报以上异常。

异常解释:

当点击back按钮时Activity退出视野时,并不会出现画面更新情况,也没有通知线程停止更新动画的命令(flag = false,因此更新动画的线程仍然在工作(flag = true)。由于Activity已退出,解锁画布操作holder.unlockCanvasAndPost(canvas)不能完成,因此就会引发上述异常。

解决方法:

 

 1.在public void onBackPressed() {}函数中加上结束线程标记即flag= false;

 2.在解锁画布的操作加上一个try catch操作。例如:

     try{
              if (holder != null) {
                    holder.unlockCanvasAndPost(canvas);
                }
             }catch(Exception e){
                e.printStackTrace();
             }

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值