Preference on Change Listener

Я прочитал этот полезный пост:

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);
    }
}

ОБНОВЛЕНИЕ

Проблема связана с фактом, о котором я не упоминал. Я использую две службы, и при изменении общих предпочтений в MyService2 ничего не запускается. В манифесте я определяю службы, которые будут запускаться в разных процессах. Есть ли способ заставить это работать?

8
задан Community 23 May 2017 в 12:24
поделиться