“这里有问题,没想到会恢复软件包” Android LogCat中的错误
-
24-09-2019 - |
题
我有一个以下模型的Android应用 LunarLander
Google的示例。我正在真实设备上调试它((Motorola Droid
) 和 Android 2.0
. 。当方向发生变化时,程序会崩溃 NullPointerException
. 。从崩溃之前开始的logcat:
02-01 00:24:27.956: DEBUG/nate(8358): Starting Game
02-01 00:24:36.878: DEBUG/dalvikvm(1086): GC freed 1788 objects / 92256 bytes in 1389ms
02-01 00:24:38.542: INFO/WindowManager(1021): Setting rotation to 1, animFlags=0
02-01 00:24:38.558: INFO/ActivityManager(1021): Config changed: { scale=1.0 imsi=310/4 loc=en_US touch=3 keys=2/1/2 nav=2/2 orien=2 layout=34}
02-01 00:24:38.620: WARN/UsageStats(1021): Something wrong here, didnt expect org.nifong.leeder to be resumed
02-01 00:24:38.886: DEBUG/nate(8358): New Surface dimensions: 854x442
02-01 00:24:38.886: DEBUG/nate(8358): flies was null
担心我的第一行是 "Something wrong here"
在 24:38.620
. 。我不知道这意味着什么,但是我认为这是由于我对屏幕变化没有正确的反应。
接下来,我会收到一条调试消息,我从自己的方法中印刷了自己 surfaceChanged()
关于新的表面尺寸。
然后我打印出有关苍蝇是否是的调试消息 null
. flies
是最终导致的领域 NullPointerException
. 。它曾经创建过一次,并且从未为其其余的程序再写。我知道在坠机发生前它不是零,因为它已经读了几次。
有人知道我的私人成员变量如何仅仅因这些线索而变得无效?
我会包含代码,但是有很多代码,我不知道什么是相关的。
解决方案 2
我通过将这两行添加到我的清单文件中的活动标签中修复了它
android:configChanges="keyboardHidden|orientation"
android:screenOrientation="landscape"
这说明我的应用程序将自己处理键盘和方向更改(通过什么都不做),并且更喜欢一直在景观中运行。
其他提示
Android的方向变化影响状态。基本上,您的活动被破坏和重新创建。因此,您必须意识到什么 Android生命周期 事件将被调用以及如何保存状态。
您还需要警惕 static
实例及其如何影响这一生命周期。
这是博客文章 解释其中的一些。
不隶属于 StackOverflow