在Android OpenGL ES应用程序上保存游戏状态

在Android OpenGL ES应用程序上保存游戏状态,android,opengl-es,Android,Opengl Es,我不太确定如何保留OpenGL ES Android应用程序上初始化的所有变量。我的应用程序初始化非常慢,如果我不保留初始化的变量,每次我关闭屏幕并再次打开,或按home键并返回应用程序,所有初始操作都会再次启动,这会导致缓慢返回游戏,并返回到游戏的第一个状态。 如果应用程序放在后台,我如何保持应用程序状态以返回,而不必再次初始化所有内容?我是否必须修改onSaveInstanceState功能 编辑:我想要的是应用程序不会重新加载上下文,并且返回到上下文不会像第一次启动时那样持续您需要使用on

我不太确定如何保留OpenGL ES Android应用程序上初始化的所有变量。我的应用程序初始化非常慢,如果我不保留初始化的变量,每次我关闭屏幕并再次打开,或按home键并返回应用程序,所有初始操作都会再次启动,这会导致缓慢返回游戏,并返回到游戏的第一个状态。 如果应用程序放在后台,我如何保持应用程序状态以返回,而不必再次初始化所有内容?我是否必须修改
onSaveInstanceState
功能


编辑:我想要的是应用程序不会重新加载上下文,并且返回到上下文不会像第一次启动时那样持续

您需要使用onSaveInstanceState和onRestoreInstanceState来保存和加载变量

我想这就是你需要的

我还是不太理解你的问题。无论如何:你将没有其他选择,这取决于什么状态被丢弃。正如我上面的评论,至少有3种状态:

  • (游戏)可以从资产中重新创建的状态
  • (游戏)表示当前用户视图的状态(参见@AndrewWilkinson的答案)
  • OpenGL上下文
  • 看一看。当进程未从内存中退出时,状态1。二,。你不必担心。糟糕的是,你无法知道,所以你需要准备好应用程序,以免被从内存中踢出,然后重新创建。所以你需要保存状态2。随时都可以

    对于状态3:在每次调用
    GLSurfaceView.Renderer.onSurfaceCreated
    时,可以确保不再存在OpenGL上下文。您需要上传再次显示所需的所有内容。设置可能会有所帮助,但您不能确定


    如果加载时间过长,考虑显示一个简单的暂停屏幕,它不会占用太长的负载,并让用户高兴。考虑以懒惰的方式做事,S.T。一些内容是按需加载的,而不是急切的。p> 请解释你所说的州是什么意思。德国劳埃德船级社的背景?可以从资产中重新创建的某些状态?游戏中的暂时状态?我解释了这个问题。我想要的是,它不需要永远只返回到一个已经初始化的应用程序实例,例如,如果我在屏幕上关机,就像几乎所有android游戏一样。这是为了保存“状态”,我的意思是,用户在哪里。但我不想每次屏幕关闭时都加载文本