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();
}