1

我正在尝试为我的 Android 游戏添加暂停/恢复支持。当用户按下暂停选项时如何暂停当前线程并在用户选择恢复选项时恢复线程?任何建议/想法都会有很大帮助。

4

2 回答 2

3

尝试查看ReplicaIsland的源代码或LunarLander示例中的示例代码。这两个是起点的流行示例。

此外,请确保您了解线程的工作原理以及您是否真的想暂停线程。另一种方法是在线程仍在运行时简单地暂停绘图/更新。像这样的一些代码可能是您正在寻找的:

@Override
public void run()
{
    while (mRun)
    {
        Canvas c = null;
        try
        {
            c = mSurfaceHolder.lockCanvas(null);
            synchronized (mSurfaceHolder)
            {
                if (mMode == STATE_RUNNING)
                {
                  updatePhysics();
                }
                doDraw(c);
            }
        } finally {
          // ...
        }
    }
}

这是 LunarLander 示例中 run() 函数的修改版本。

主要的兴趣点是只有在 mMode == STATE_RUNNING 时才会调用 updatePhysics() 函数。简单地更改 mMode 将导致物理停止更新并有效地暂停游戏。

我认为这或多或少是@vivek 所描述的。

于 2011-05-16T21:16:18.123 回答
0

我猜,线程正在更新 GUI。您可以使用布尔值来指示当前状态是否暂停。在线程循环中,您可以添加一个条件来检查当前状态是否已暂停。如果暂停,您可以使用 continue 跳过循环。否则,执行整个代码。

于 2011-05-03T09:53:59.483 回答