我正在尝试为我的Android游戏添加Pause / Resume支持。当用户按下暂停选项时如何暂停当前线程并在使用选择恢复选项时恢复线程?任何建议/想法都会有很大的帮助。
答案 0 :(得分: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所描述的。
答案 1 :(得分:0)
我猜,线程正在更新GUI。您可以使用布尔值来指示当前状态是否暂停。在线程循环中,您可以添加一个条件来检查当前状态是否暂停。如果暂停,您可以使用continue跳过循环。否则,执行整个代码。