您的位置:首页 > 移动开发 > Android开发

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

2016-10-16 16:53 1341 查看
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退出视野时,并不会出现画面更新情况,也没有通知线程停止更新动画的命令([b]flag
= false
)[/b],因此更新动画的线程仍然在工作(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();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐