この問題に関する説明を見つけようとしましたが、何も見つかりませんでした。
バックグラウンドで動作しているリモート サービスがあります。このサービスは、SharedPreference からいくつかの設定を読み取ります。
私が抱えている問題は、PreferenceActivity (アクティビティとサービスが同じアプリケーションと同じパッケージに属している) から設定を変更したときに発生します。設定を変更すると正しく保存されますが、サービスがその設定を読み取るとすぐに (サービスは設定を変更することはなく、PreferenceActivity から変更できないいくつかの内部設定のみを変更します)、設定は「リセット」され、サービスはリセットされた値を取得します。
これは CheckBoxPreference で発生しています。私はそれらを持っていないので、これが他の種類の設定で起こるかどうかはわかりません。
設定を変更した後、サービスを再起動する必要がありますか? または、サービスの設定を「更新」する必要がありますか? これは、HoloEverywhere の使用に関連する問題でしょうか?
SharedPreference オブジェクトを取得するには、次のコードを使用します。
PreferenceManager.wrap(context, getSharedPreferencesName(context), Context.MODE_MULTI_PROCESS);
このコードは HoloEverywhere に固有のもので、次のようになります。
context.getSharedPreferences(getSharedPreferencesName(context), Context.MODE_MULTI_PROCESS);
「getSharedPreferencesName()」は、「package.name_preferences」で構成された文字列を返すだけです。
ありがとうございました。