AndEngine GLES 2.0 - 电源按钮问题 - 应用程序崩溃onResume()

时间:2013-05-09 13:34:17

标签: android crash andengine android-logcat

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

这是我在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"

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

    @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();
    }

有什么问题? 我该怎么做才能阻止电源按钮问题上的游戏崩溃?

1 个答案:

答案 0 :(得分:2)

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

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