美文网首页
java.lang.IllegalArgumentExcepti

java.lang.IllegalArgumentExcepti

作者: 菜神一把梭 | 来源:发表于2019-12-27 08:13 被阅读0次

http://blog.sina.com.cn/s/blog_90d4a0e70102wajh.html

4、SurfaceView和Canvas

java.lang.IllegalArgumentException: canvas object must be the same instance that was previously returned by lockCanvas

android.view.Surface.unlockCanvasAndPost

android.view.SurfaceView$4.unlockCanvasAndPost

......

​在渲染SurfaceView时,我们常常这么写:

final Canvas canvas = holder.lockCanvas();​

//TO DO something

holder.unlockCanvasAndPost(canvas);​

看起来这个canvas不可能改变,然而还是会出现上面的异常。常见的是正在渲染时,按下home键退到主页。

解决方法很简单,在SurfaceView内新建一个flag,标记surface是否被销毁

SurfaceHolder 设置Callback

在holder.lockCanvas()前和holder.unlockCanvasAndPost(canvas)前判断这个flag,为true直接return。

相关文章

网友评论

      本文标题:java.lang.IllegalArgumentExcepti

      本文链接:https://www.haomeiwen.com/subject/piyroctx.html