«Что-то здесь не так, не ожидал возобновления PACKAGE» в Android Logcat - PullRequest
5 голосов
/ 01 февраля 2010

У меня есть приложение для 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 ]

3 голосов
/ 01 февраля 2010

Изменения ориентации в Android влияют на состояние.В основном, ваша деятельность разрушена и воссоздана.Поэтому вы должны знать, какие события жизненный цикл Android будут вызываться, и как сохранять состояние.

Вам также следует остерегаться static экземпляров и как это влияет на этот жизненный цикл.1006 *

Вот сообщение в блоге , объясняющее некоторые из них.

2 голосов
/ 01 февраля 2010

Я исправил это, добавив эти две строки в тег активности в моем файле манифеста

android:configChanges="keyboardHidden|orientation"
android:screenOrientation="landscape"

это говорит о том, что мое приложение будет обрабатывать изменения клавиатуры и ориентации самостоятельно (ничего не делая) и предпочитает постоянно работать в альбомной ориентации.

...