「ここで何か間違っている、パッケージが再開されるとは思わなかった」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
マニフェストファイルのアクティビティタグにこれら2つの行を追加することで修正しました
android:configChanges="keyboardHidden|orientation"
android:screenOrientation="landscape"
これは、私のアプリケーションがキーボードとオリエンテーションの変更を(何もしないことによって)処理し、常に景観で実行することを好むと言います。
他のヒント
Androidの方向の変化は状態に影響します。基本的に、あなたの活動は破壊され、再現されます。したがって、あなたは何を知っている必要があります Androidライフサイクル イベントが呼び出され、状態を救う方法があります。
また、警戒する必要があります static
インスタンスとそれがこのライフサイクルにどのように影響するか。
これがブログ投稿です これのいくつかを説明します。