加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 恢复活动时“线程已经开始”

发布时间:2020-12-14 05:10:56 所属栏目:Java 来源:网络整理
导读:这是我的情况: 我正在为 android构建一个游戏,我的游戏的活动由一个自定义的surfaceView组成,它具有游戏逻辑和渲染的线程.该架构类似于Google网站上的LunarLander演示. 当活动开始时,它会创建surfaceView并调用此方法: @Override public void surfaceCreat
这是我的情况:
我正在为 android构建一个游戏,我的游戏的活动由一个自定义的surfaceView组成,它具有游戏逻辑和渲染的线程.该架构类似于Google网站上的LunarLander演示.

当活动开始时,它会创建surfaceView并调用此方法:

@Override
    public void surfaceCreated(SurfaceHolder holder)
    {   
        renderThread.start();
    }

当我按住Home按钮退出游戏时,调用onPause()方法,调用surfaceDestroyed().在surfaceDestroyed我停止游戏Thread通过调用:

@Override
    public void surfaceDestroyed(SurfaceHolder holder)
    {
        synchronized(holder)
        {
            renderThread.stop();
        }
    }

该应用程序去后台罚款.然后,当我通过按下图标重新启动应用程序时,我会在屏幕上显示“强制关闭”弹出窗口中的“已经开始的线程”消息.当活动在render线程上调用start()时,活动进入“surfaceCreated”方法时,会发生此消息.

现在我已经看了几个小时,不知道为什么会这样.我相信当我关闭应用程序时我的线程被停止,所以我不明白为什么它已经开始了.

解决方法

那些方法不会做你认为他们做的事情.从 API doc:

It is never legal to start a thread
more than once.

和:

public final void stop() – Deprecated. This method is inherently unsafe.

如果你想暂停一个线程,你必须在线程内使用Object.wait()和Objecft.notifyAll().

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读