私はこの役立つ投稿を読みました:
SharedPreferences.onSharedPreferenceChangeListenerが一貫して呼び出されていない
しかし、私は運がありません。サービスで実行されるOnSharedPreferenceChangeListenerを作成しようとしています。すべてが正しく実装されていますが、リスナーが常にトリガーされるとは限りません。
public MyServiceOne extends Service {
public SharedPreferences mSharedPreferences;
// Listener defined by anonymous inner class.
public OnSharedPreferenceChangeListener mListener = new OnSharedPreferenceChangeListener() {
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
Log.d("debug", "A preference has been changed");
}
};
@Override
public void onCreate() {
mSharedPreferences = getSharedPreferences(MySharedPreferences.NAME, Context.MODE_PRIVATE);
mSharedPreferences.registerOnSharedPreferenceChangeListener(mListener);
}
@Override
public void onDestroy() {
super.onDestroy();
mSharedPreferences.unregisterOnSharedPreferenceChangeListener(mListener);
}
}
アップデート
問題は私が言及しなかった事実から生じています。2つのサービスを実行していますが、MyService2で共有設定の変更が行われると、何もトリガーされません。マニフェストでは、さまざまなプロセスで実行するサービスを定義します。これを機能させる方法はありますか?