这是我的情况:我正在为 android 构建一个游戏,我的游戏活动由一个自定义的 surfaceView 组成,它有一个用于游戏逻辑和渲染的线程。该架构类似于 Google 网站上的 LunarLander 演示。
当活动启动时,它会创建表面视图并调用此方法:
@Override
public void surfaceCreated(SurfaceHolder holder)
{
renderThread.start();
}
当我按下home键退出游戏时,调用了onPause()方法,该方法调用了surfaceDestroyed()。在 surfaceDestroyed 我通过调用停止游戏线程:
@Override
public void surfaceDestroyed(SurfaceHolder holder)
{
synchronized(holder)
{
renderThread.stop();
}
}
该应用程序进入后台正常。然后,当我通过按图标重新启动应用程序时,我会在日志中收到“线程已启动”消息以及屏幕上的“强制关闭”弹出窗口。当活动在渲染线程上调用 start() 时进入“surfaceCreated”方法时,会发生此消息。
现在我已经研究了几个小时,无法弄清楚为什么会这样。我相信当我关闭应用程序时我的线程已停止,所以我不明白为什么它说它已经开始了。