最近、v4 サポート ライブラリを Android アプリケーションに組み込み、タブ間のスワイプを有効にしました。静的オブジェクトが null になるアプリケーションでランダムなクラッシュが発生します。
Android がプロセスを強制終了してメモリを要求し、プロセスを再起動して最新のアクティビティを再起動するメモリ管理のストーリーを伝える次の投稿を読みました。
また、これが静的変数がアプリケーション データの格納に適していない理由であることも理解しました。代替手段として設定とDBを検討しています。しかし、データの複雑さを考えると、これには時間がかかります。
編集:アプリケーションレベルで一連の構成を保持するために、静的属性を持つクラスを使用するのではなく、アクティビティ内にデータを保存していません。
私の質問は、v4 サポート ライブラリを統合した後にこの問題に直面するのはなぜですか? サポートv4 libで同様の問題に直面した人はいますか? これは私の問題や私の漠然とした仮定と関係がありますか?
Androidアプリでシステムによって静的変数値をnullにすることはできますか?
アプリケーションがクラッシュしたときのログは次のとおりです。ApplicationConfiguration: getListOrder() メソッドで NPE を観察し、静的変数の 1 つを参照しています。ログから、システムがプロセスを強制終了して再起動したことを示す兆候はありますか? それとも、何か違うことを示していますか?
!@Sync 406D/HierarchicalStateMachine( 287): handleMessage: E msg.what=83D/HierarchicalStateMachine( 287): processMsg: ConnectedStateD/WifiStateMachine( 287): ConnectedState{ what=83 when=-4ms arg1=5 }D/HierarchicalStateMachine( 287): handleMessage: XW/PowerManagerService( 287): タイマー 0x3->0x3|0x0D/dalvikvm( 2775): GC_EXPLICIT 解放 61K、5% 解放 6209K/6531K、一時停止 6ms+2msI/fSharp:BackgroundServiceHandler( 4637): メッセージ受信: 3I/fSharp:BackgroundServiceHandler( 4637): リスト メッセージ ハンドラーが存在し、メッセージを送信していますI/fSharp:BackgroundThread( 4637): アウトバウンド キューの処理が完了しましたI/fSharp:BackgroundThread( 4637): Do ループ内...D/AndroidRuntime( 4637): VMW/dalvikvm をシャットダウンしています (4637): threadid=1: キャッチされない例外で終了するスレッド (group=0x401b7760)E/AndroidRuntime(4637): FATAL EXCEPTION:mainE/AndroidRuntime( 4637): java.lang.NullPointerExceptionE/AndroidRuntime( 4637): com.tfs.fsharpsupport.common.configuration.ApplicationConfiguration.getListOrder(ApplicationConfiguration.java:125) で E/AndroidRuntime( 4637): com.tfs で.fsharp.model.ListModel.refreshList(ListModel.java:576)E/AndroidRuntime(4637): com.tfs.fsharp.model.ListModel.onListChanged(ListModel.java:332)E/AndroidRuntime(4637): com .tfs.fsharp.model.ListModel.handleListMessage(ListModel.java:285)E/AndroidRuntime(4637): com.tfs.fsharpsupport.background.BackgroundServiceHandler.handleMessage(BackgroundServiceHandler.java:104)E/AndroidRuntime(4637): android.os.Handler.dispatchMessage(Handler.java:99)E/AndroidRuntime(4637): android.os.Looper.loop(Looper.java:132)E/AndroidRuntime(4637): android.app.ActivityThread.main(ActivityThread.java:4028)E/AndroidRuntime(4637): java.lang.reflect.Method.invokeNative(ネイティブ メソッド)E/AndroidRuntime(4637): java.lang.reflect.Method.invoke(Method) .java:491)E/AndroidRuntime(4637): com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:844)E/AndroidRuntime(4637): com.android.internal.os.ZygoteInit で.main(ZygoteInit.java:602)E/AndroidRuntime(4637): dalvik.system.NativeStart.main(Native Method)W/ActivityManager(287): 強制終了アクティビティ com.tfs.fsharp.ui.activity/.StartupActivityE /android.os.Debug( 287): Dumpstate > /data/log/dumpstate_app_errorI/dumpstate( 5407): beginD/HierarchicalStateMachine( 287)invokeNative(ネイティブ メソッド)E/AndroidRuntime( 4637): java.lang.reflect.Method.invoke(Method.java:491)E/AndroidRuntime( 4637): com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run で(ZygoteInit.java:844)E/AndroidRuntime(4637): com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)E/AndroidRuntime(4637): dalvik.system.NativeStart.main(Native) Method)W/ActivityManager( 287): 強制終了アクティビティ com.tfs.fsharp.ui.activity/.StartupActivityE/android.os.Debug( 287): Dumpstate > /data/log/dumpstate_app_errorI/dumpstate( 5407): beginD/ HierarchicalStateMachine( 287)invokeNative(ネイティブ メソッド)E/AndroidRuntime( 4637): java.lang.reflect.Method.invoke(Method.java:491)E/AndroidRuntime( 4637): com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run で(ZygoteInit.java:844)E/AndroidRuntime(4637): com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)E/AndroidRuntime(4637): dalvik.system.NativeStart.main(Native) Method)W/ActivityManager( 287): 強制終了アクティビティ com.tfs.fsharp.ui.activity/.StartupActivityE/android.os.Debug( 287): Dumpstate > /data/log/dumpstate_app_errorI/dumpstate( 5407): beginD/ HierarchicalStateMachine( 287)com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)E/AndroidRuntime(4637): dalvik.system.NativeStart.main(Native Method)W/ActivityManager(287): 強制終了アクティビティ com. tfs.fsharp.ui.activity/.StartupActivityE/android.os.Debug( 287): Dumpstate > /data/log/dumpstate_app_errorI/dumpstate( 5407): beginD/HierarchicalStateMachine( 287)com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)E/AndroidRuntime(4637): dalvik.system.NativeStart.main(Native Method)W/ActivityManager(287): 強制終了アクティビティ com. tfs.fsharp.ui.activity/.StartupActivityE/android.os.Debug( 287): Dumpstate > /data/log/dumpstate_app_errorI/dumpstate( 5407): beginD/HierarchicalStateMachine( 287)