首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >锁定手机重启游戏场景

锁定手机重启游戏场景
EN

Stack Overflow用户
提问于 2012-07-15 19:52:31
回答 2查看 688关注 0票数 0

我正在用安卓和AndEngine开发一个游戏,目前最大的问题是当手机被锁定和解锁时(大约一分钟或更长时间),游戏场景会重置。

我做了很多搜索,大多数建议使用应用程序关闭时调用的函数进行保存。我可以这么做,但是节省了很多钱。但是,我知道这是可能的,因为它是在AndEngine示例中完成的。AndEngine示例中特别值得注意的一件事是,当程序处于前台时,手机被锁定时,屏幕会再次打开。再次按下电源将关闭屏幕,直到再次解锁,在巫术后,游戏将完全恢复。

我滚动了Manifest文件和启动器源代码,复制和粘贴了一些东西,但仍然没有成功。似乎解决方案在Manifest文件中,所以这是我的程序之一,包括到目前为止的所有修改:

代码语言:javascript
复制
<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>

所有这些都不会对问题产生任何影响,尽管许多人都建议这样做。谁能告诉我我可能做错了什么?提前感谢!

EN

回答 2

Stack Overflow用户

发布于 2012-07-15 20:01:37

我猜这与活动的生命周期有关。正如您在这里的图表中所看到的,http://developer.android.com/reference/android/app/Activity.html

有几种方法与暂停、停止和启动活动相关。您应该覆盖onPause()onResume()方法,并在那里执行保存。一旦调用了onPause(),操作系统就可以选择终止您的活动,而您不能选择执行任何操作。

这可能就是正在发生的事情,所以如果您覆盖了这些方法,您可以告诉应用程序在暂停时(也就是说,整个屏幕被另一个视图覆盖-要么是锁定的,要么是电话呼叫,或者是另一个应用程序,等等),以及何时恢复。

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

票数 0
EN

Stack Overflow用户

发布于 2012-07-20 06:10:02

我遇到了完全相同的问题,我在游戏活动的清单中添加了以下内容:

代码语言:javascript
复制
         android:screenOrientation="landscape"
         android:configChanges="keyboard|keyboardHidden|orientation">            
    </activity>

正如您所看到的,您的清单中没有screenOrientation,您可能只是在创建引擎时设置了方向,不知道这是否会改变什么,但我有它,它工作了

哦,别忘了还要设置onResumeGame和onPauseGame:

代码语言:javascript
复制
@Override
public void onResumeGame() {
    super.onResumeGame();

    this.enableAccelerometerSensor(this);
}

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

    this.disableAccelerometerSensor();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11491643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档