クラス内の他の定数と一緒に呼び出される非最終的な静的SharedPreferencesオブジェクトを宣言しました。PREFSConstants.java
public static SharedPreferences PREFS = null;
そうする理由は、私のアプリが同じ共有設定ファイルにアクセスし続ける約6つの異なるもので構成されており、毎回AsyncTasks取得したくなかったからです。アプリの最初の実行時に、in myを呼び出してに保存し、 が起動される前にインスタンスを指すようにして、 .SharedPreferencesEditorgetSharedPreferences()MainActivityPREFSAsyncTaskNullPointerException
しかし、とにかくNullPointerExceptions から s を取得し続けました。AsyncTaskすべてのスタック トレースは、値を取得するために呼び出しを行う行を指していConstants.PREFSます。私の理論では、Android はしばらくするとアプリのプロセスを強制終了するため、次にいずれかの のアラームが鳴ったときにAsyncTask、 の値Constants.PREFSはすでに になっていますnull。
私の質問は:Context代わりに静的変数を作成する必要がありますか? Android がプロセスを強制終了しても、その状態は保持されますか? 後者がインスタンス化されて を呼び出すことができるようになると、私Contextは常に の参照を渡します。ただし、 Android ドキュメントからの拡張は見られません。AsyncTaskgetSystemService()NullPointerExceptionContextSerializable