【问题标题】:AndEngine GLES 2.0 - Power button issue - App Crashes onResume()AndEngine GLES 2.0 - 电源按钮问题 - 应用程序崩溃 onResume()
【发布时间】:2013-05-09 13:34:17
【问题描述】:

当我按下电源按钮锁定屏幕并再次按下它以解锁屏幕时应用程序崩溃。 屏幕解锁后应用崩溃。

这是我在 logcat 中得到的 stackTress:

05-09 18:46:57.254: E/AndroidRuntime(25354):    FATAL EXCEPTION: main
05-09 18:46:57.254: E/AndroidRuntime(25354):    java.lang.NullPointerException
05-09 18:46:57.254: E/AndroidRuntime(25354):    at org.andengine.ui.activity.BaseGameActivity.onResumeGame(BaseGameActivity.java:222)
05-09 18:46:57.254: E/AndroidRuntime(25354):    at org.andengine.ui.activity.BaseGameActivity$4.run(BaseGameActivity.java:373)
05-09 18:46:57.254: E/AndroidRuntime(25354):    at android.os.Handler.handleCallback(Handler.java:615)
05-09 18:46:57.254: E/AndroidRuntime(25354):    at android.os.Handler.dispatchMessage(Handler.java:92)
05-09 18:46:57.254: E/AndroidRuntime(25354):    at android.os.Looper.loop(Looper.java:137)
05-09 18:46:57.254: E/AndroidRuntime(25354):    at android.app.ActivityThread.main(ActivityThread.java:4744)
05-09 18:46:57.254: E/AndroidRuntime(25354):    at java.lang.reflect.Method.invokeNative(Native Method)
05-09 18:46:57.254: E/AndroidRuntime(25354):    at java.lang.reflect.Method.invoke(Method.java:511)
05-09 18:46:57.254: E/AndroidRuntime(25354):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
05-09 18:46:57.254: E/AndroidRuntime(25354):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
05-09 18:46:57.254: E/AndroidRuntime(25354):    at dalvik.system.NativeStart.main(Native Method)

BaseGameActivityClass 的 onResumeGame() 方法出现 Nullpointer 异常。

我在清单的“活动”标签中添加了这一行

 android:configChanges="orientation|keyboard|keyboardHidden"

在扩展 BaseGameActivity 的 GameActivity 中,我添加了这个

    @Override
    public void onPause() {
      super.onPause();
      mEngine.stop();
    }

    @Override
    protected void onResume() {
    // The activity has become visible (it is now "resumed").
       super.onResume();
       mEngine.start();
    }

怎么了? 我应该怎么做才能停止在电源按钮问题上崩溃的游戏?

【问题讨论】:

    标签: android crash andengine android-logcat


    【解决方案1】:

    每当调用 onResume() 方法时,它都会重新创建所有资源。 因此,在您调用 onResume() 方法时,控制器没有找到 mEngine 实例。因此,它会引发错误 NullPointerException。

    onPause() 方法的任务是停止音乐和声音,onResume() 方法是再次播放声音和音乐。这些方法不会用于 Android 游戏开发中的任何其他目的,尤其是在 AndEngine 中。

    【讨论】:

    • 我的资源非常庞大。加载它们需要几秒钟。我正在使用精灵表。 bt 同样的事情适用于 Gingerbread 并且不仅仅适用于 ICS 及更高版本。为什么会这样?
    • 不,你必须改变你的开发策略,否则以后会产生大问题。因为市场上有很多设备可供选择。
    • 我正在加载 SplashScene 本身的所有资源。然后在 GameScene 中相应地操作它们。
    • 如果您的游戏包含更多图形,那么您必须将其分成多个部分。一次只将所需的图形加载到内存中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-19
    • 1970-01-01
    相关资源
    最近更新 更多