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

前端之家收集整理的这篇文章主要介绍了java – 恢复活动时“线程已经开始”前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这是我的情况:
我正在为 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().

猜你在找的Java相关文章