首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SurfaceHolder : IllegalStateException - Surface没有被锁定

SurfaceHolder : IllegalStateException - Surface没有被锁定
EN

Stack Overflow用户
提问于 2014-05-25 23:21:14
回答 1查看 3K关注 0票数 1

我的程序出错了。这个错误似乎表明,当我试图在我的绘制序列的末尾解锁时,我的曲面没有被锁定。但如下面的代码所示。我第一件事就是锁住表面。我为什么要犯这个错误。我做错了什么?

给出错误的方法:

错误行'**this.holder.unlockCanvasAndPost(canvas);**

代码语言:javascript
复制
public void run() {
        while (this.drawFlag) {
            Canvas canvas = this.holder.lockCanvas();
            canvas.drawColor(Color.rgb(168, 201, 187));
            switch (this.sceneFlag) {
            case -1:
                draw(canvas);
                drawHow(canvas);
                drawStr(canvas);
                break;
            case 0:
                draw(canvas);
                drawStr(canvas);
                break;
            case 1:
                update();
                draw(canvas);
                if (this.timeAttackFlag && this.optionNum == 0) {
                    this.sceneFlag = 2;
                    try {
                        setScore();
                    } catch (Exception e) {
                    }
                } else {
                    this.holder.unlockCanvasAndPost(canvas);
                }
                break;
            case 2:
                drawResult(canvas);
                break;
            }
            this.holder.unlockCanvasAndPost(canvas);
            try {
                TimeUnit.NANOSECONDS.sleep(this.fpsM.state());
            } catch (Exception e_2) {
            }
        }
    }

逻辑猫:

代码语言:javascript
复制
05-25 19:12:14.091: E/AndroidRuntime(21305): FATAL EXCEPTION: Thread-6886
05-25 19:12:14.091: E/AndroidRuntime(21305): Process: com.gordondev.smackitup, PID: 21305
05-25 19:12:14.091: E/AndroidRuntime(21305): java.lang.IllegalStateException: Surface was not locked
05-25 19:12:14.091: E/AndroidRuntime(21305):    at android.view.Surface.unlockCanvasAndPost(Surface.java:268)
05-25 19:12:14.091: E/AndroidRuntime(21305):    at android.view.SurfaceView$4.unlockCanvasAndPost(SurfaceView.java:852)
05-25 19:12:14.091: E/AndroidRuntime(21305):    at com.gordondev.smackitup.GameView.run(GameView.java:858)
05-25 19:12:14.091: E/AndroidRuntime(21305):    at java.lang.Thread.run(Thread.java:841)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-25 23:40:21

你试图解锁两次。从案例1中删除else块。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23860879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档