Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
暂停或退出android游戏_Android_Game Engine_Onpause - Fatal编程技术网

暂停或退出android游戏

暂停或退出android游戏,android,game-engine,onpause,Android,Game Engine,Onpause,我正在开发一个Android游戏,它包含了所有典型的东西:游戏循环、渲染器、面板等等 问题是当我退出游戏时,它总是崩溃。。。我想这是因为我没有正确地停止游戏循环,游戏还在继续。另外,当我“最小化”游戏或切换手机待机时,我想暂停它 我应该在暂停和恢复中加什么 我只有这个: @Override public void surfaceDestroyed(SurfaceHolder holder) { super.surfaceDestroyed(holder); //Stop ga

我正在开发一个Android游戏,它包含了所有典型的东西:游戏循环、渲染器、面板等等

问题是当我退出游戏时,它总是崩溃。。。我想这是因为我没有正确地停止游戏循环,游戏还在继续。另外,当我“最小化”游戏或切换手机待机时,我想暂停它

我应该在暂停和恢复中加什么

我只有这个:

@Override
public void surfaceDestroyed(SurfaceHolder holder) {

    super.surfaceDestroyed(holder);

    //Stop game loop:
    loop.setRunning(false);

    boolean retry = true;
    while (retry) 
    {           
        try 
        {
            //gameLoop.join();
            loop.stop();
            retry = false;
        } 
        catch (Exception e) 
        {
            // try again shutting down the thread
        }
    }
}
但这还不够,只是为了退出


谢谢

为了确保您的应用程序“正常”运行(通常意味着它按照您希望的方式运行),您应该覆盖包含游戏循环的活动中的
onPause()
onResume()
方法。考虑到您实际上没有提供太多其他代码,这是有道理的,因为您只是忘记了实现它

例如,这里有一些抽象的psuedo代码来实现您的目标:

protected void onPause(){

   //Save the game state
   //Pause the game loop
   //Save any other data that need to be persistent throughout sessions
}

protected void onResume(){

   //Reinitialize game state
   //Reinitialize any other persistent data
   //Resume the game loop
}
如果您以前从未开发过Android应用程序,那么很容易忽略这一点,这是可以理解的


有关Android活动状态的更多说明,请参见摘自Android文档的图片。

需要代码和logcat堆栈跟踪。只要试着想象你就是我。我只有你键入的文本。你怎么回答这个问题?我没有这些函数的代码。这就是为什么它会崩溃。我不知道如何正确地停止循环。我只有onSurfaceDestroy。我怎样才能保存游戏状态?我的意思是,当我最小化游戏时,所有的东西都被破坏了:我在哪里可以保存它?这真的取决于你的实现。您始终可以使用简单的数据库使数据持久化,甚至可以在每次调用
onPause()
期间将值写入文件。然后可以在
onResume()调用中读取相应的文件。为了帮助您实现前一种选择,请研究基于SQLite数据的方法(您可能已经开始了),后者研究将信息写入文件。