锁定手机重新启动游戏场景

问题描述:

我正在用AndEngine在Android上开发游戏,当前最大的问题是手机被锁定并再次解锁(大约一分钟或更长时间)游戏场景重置。锁定手机重新启动游戏场景

我做了很多搜索,并且大多数人建议使用应用程序关闭时调用的函数进行保存。我可以做到这一点,但它是一个很大的节约。不过,我知道这是可能的,因为它是在AndEngine示例中完成的。 AndEngine示例中的一个特别引人注目的事情是当程序处于前台时手机被锁定时,屏幕再次打开。在游戏完美恢复之后,再次按下电源可关闭屏幕直至再次解锁。

我滚动槽Manifest文件和启动器源代码,复制和粘贴一些东西,但仍然没有成功。看来,解决方法是在清单文件,所以这里是我的方案之一,包括到目前为止的所有修改:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.andenginetest" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="15" /> 

<uses-permission android:name="android.permission.WAKE_LOCK"/> 
<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name=".MainActivity" 
     android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 
     android:configChanges="orientation|keyboard|keyboardHidden" 
     android:label="@string/title_activity_main" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

没有它正在对这个问题有什么影响,即使它是由建议的很多人。有人能告诉我我可能会做错什么吗?提前致谢!

+0

你的游戏是在“肖像”还是“风景”模式?我在'landscape'中遇到了这个问题,但是当我将它改为'portrait'时,一切都按预期工作。 – 2012-07-15 12:21:34

+0

它处于横向模式。我现在试试画像 – 2012-07-15 12:26:54

+0

什么!?这是一个奇迹!以某种方式改变为肖像模式解决了问题!非常感谢!不知道如何工作。现在的问题是我的游戏是为景观设计的。也许如果我先去肖像,然后切换到风景,或者把它放在自动旋转...... – 2012-07-15 12:42:59

我猜它与活动的生命周期有关。 如您在此处的示意图中所示 http://developer.android.com/reference/android/app/Activity.html

有几种与暂停,停止和启动活动有关的方法。 您应该覆盖onPause()onResume()方法,并在那里执行保存。 一旦调用了onPause(),操作系统可以选择停止执行任何操作,而无需执行任何操作。因此,如果覆盖这些方法,则可以告诉应用程序在暂停时执行什么操作(即,整个屏幕被另一个视图覆盖 - 无论是锁定的,还是电话呼叫或其他应用程序等等)以及何时恢复。

希望这就是你的意思。 祝你好运!

+0

谢谢,但那不是我的意思。问题不是最小化时,但是当手机被锁定然后再次解锁时,重置。该示例程序设法避免这个问题,但我找不到它。而onPause会很有用,找到并保存每个变量和物理对象的位置,速度等对我来说太复杂了,特别是如果有解决方法的话。 – 2012-07-15 12:12:43

+0

搜索一些后,我找不到解决方法。这似乎只是Android操作系统的工作原理。 看到这个SO线程http://stackoverflow.com/questions/3407192/problems-understanding-the-life-cycle-when-screen-goes-off-and-on 当屏幕锁定,然后解锁,它几乎就好像它重新启动一样。也要注意第二个答案,随着方向的变化。也许它会解决你的问题 – 2012-07-15 12:31:00

我有完全相同的问题,我在游戏活动将此添加到我的清单:

  android:screenOrientation="landscape" 
     android:configChanges="keyboard|keyboardHidden|orientation">    
    </activity> 

正如你所看到的,你没有的screenOrientation在你的清单,你可能只需设置方向在创建引擎,说不上这是否会改变什么,但我必须这样说,这和它的工作

哦,不要忘记设置onResumeGame和onPauseGame也:

@Override 
public void onResumeGame() { 
    super.onResumeGame(); 

    this.enableAccelerometerSensor(this); 
} 

@Override 
public void onPauseGame() { 
    super.onPauseGame(); 

    this.disableAccelerometerSensor(); 
}