我正在使用AndEngine开发Android游戏,目前最大的问题是当手机被锁定并再次解锁时(大约一分钟或更长时间)游戏场景重置。
我做了很多搜索,大多数建议使用应用程序关闭时调用的函数进行保存。我可以做到这一点,但这是一个很大的节省。但是,我知道这是可能的,因为它是在AndEngine示例中完成的。 AndEngine示例中一个特别值得注意的事情是,当程序在前台时手机被锁定时,屏幕再次打开。再次按下电源会使屏幕关闭,直到游戏完全恢复后再次解锁。
我滚动了Manifest文件和启动器源代码,复制并粘贴了一些东西,但仍然没有成功。似乎解决方案是在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 :(得分:0)
我猜它与活动生命周期有关。 正如您在此处的图表中所见 http://developer.android.com/reference/android/app/Activity.html
有几种与暂停,停止和启动活动相关的方法。
您应该覆盖onPause()
和onResume()
方法,并在那里执行保存。
一旦调用onPause()
,操作系统就可以选择终止您的活动,而无需您做任何事情。
这可能是发生的事情,所以如果你覆盖这些方法,你可以告诉应用程序在暂停时做什么(意思是整个屏幕被另一个视图覆盖 - 无论是锁定,还是电话,还是其他应用程序,等)并在恢复时。
希望这就是你的意思。 祝你好运!
答案 1 :(得分:0)
我有完全相同的问题,我在游戏活动中将其添加到我的清单中:
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();
}