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