【发布时间】: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