【问题标题】:Landscape crashes when paused and Portrait doesnt暂停时横向崩溃,纵向不崩溃
【发布时间】:2014-07-24 19:44:41
【问题描述】:

大家好,

我试图在网上找到这个问题的答案,但我找不到解决问题的方法......

所以也许你们中的一些人知道我可以做些什么来解决它。

所以我有一个游戏(利用 cavnas 和所有游戏内容的表面视图和线程)并且在纵向模式下一切正常,但我希望我的游戏在横向模式下玩,所以我改变了模式在android清单中像这样:

android:screenOrientation="landscape"

效果很好,一切都一样,除非我想关闭活动(调用 onPause 方法)。当我收到应用程序需要强制关闭的错误时。

现在有些人通过添加解决了他们的问题

 android:configChanges="orientation|screenSize|keyboard|keyboardHidden|navigation"

到他们的清单文件,但这对我没有用,我仍然不断收到NullPointerException

这里是日志:

07-24 21:27:12.160: E/AndroidRuntime(5272): FATAL EXCEPTION: main
07-24 21:27:12.160: E/AndroidRuntime(5272): java.lang.RuntimeException: Unable to pause activity {com.example.fishtruck/com.example.fishtruck.Start}: java.lang.NullPointerException
07-24 21:27:12.160: E/AndroidRuntime(5272):     at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2706)
07-24 21:27:12.160: E/AndroidRuntime(5272):     at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2662)
07-24 21:27:12.160: E/AndroidRuntime(5272):     at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:2640)
07-24 21:27:12.160: E/AndroidRuntime(5272):     at android.app.ActivityThread.access$800(ActivityThread.java:123)
07-24 21:27:12.160: E/AndroidRuntime(5272):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1154)
07-24 21:27:12.160: E/AndroidRuntime(5272):     at android.os.Handler.dispatchMessage(Handler.java:99)
07-24 21:27:12.160: E/AndroidRuntime(5272):     at android.os.Looper.loop(Looper.java:137)
07-24 21:27:12.160: E/AndroidRuntime(5272):     at android.app.ActivityThread.main(ActivityThread.java:4424)
07-24 21:27:12.160: E/AndroidRuntime(5272):     at java.lang.reflect.Method.invokeNative(Native Method)
07-24 21:27:12.160: E/AndroidRuntime(5272):     at java.lang.reflect.Method.invoke(Method.java:511)
07-24 21:27:12.160: E/AndroidRuntime(5272):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:825)
07-24 21:27:12.160: E/AndroidRuntime(5272):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:592)
07-24 21:27:12.160: E/AndroidRuntime(5272):     at dalvik.system.NativeStart.main(Native Method)
07-24 21:27:12.160: E/AndroidRuntime(5272): Caused by: java.lang.NullPointerException
07-24 21:27:12.160: E/AndroidRuntime(5272):     at com.example.fishtruck.Start.onPause(Start.java:113)
07-24 21:27:12.160: E/AndroidRuntime(5272):     at android.app.Activity.performPause(Activity.java:4563)
07-24 21:27:12.160: E/AndroidRuntime(5272):     at android.app.Instrumentation.callActivityOnPause(Instrumentation.java:1197)
07-24 21:27:12.160: E/AndroidRuntime(5272):     at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2693)
07-24 21:27:12.160: E/AndroidRuntime(5272):     ... 12 more

而且(不确定是否相关,但到底是什么)这是我如何调用onPause 方法:

view.stopThread();
this.finish(); //this is called in the activity and view = surfaceView

stopThread() 方法是这样调用的:

 if(thread!=null){
          thread.interrupt();
          thread.setRunning(false);
          isStopped = true;
          thread = null; 
      }

【问题讨论】:

  • Start.java 的第 113 行有什么对象?您在那里的对象未正确启动(它为空),这会使您的应用程序崩溃。您可能正在尝试对不存在的对象执行某些操作。我猜它是(如果你发布了你的整个 onPause)对象“视图”是空的。
  • 哦,谢谢伙计,这真的很有意义
  • 我有柜台对象。如果您想发布答案,我会接受。

标签: android multithreading landscape onpause


【解决方案1】:

您在 Start.java 的第 113 行有什么对象?您拥有的对象未正确启动(它为空),这会使您的应用崩溃。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-30
    • 1970-01-01
    • 2020-06-12
    • 2018-05-04
    • 2016-05-03
    • 2017-03-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多