SharedPreferences.onSharedPreferenceChangeListener not being called consistently

前端 未结 8 1200
终归单人心
终归单人心 2020-11-22 06:47

I\'m registering a preference change listener like this (in the onCreate() of my main activity):

SharedPreferences prefs = PreferenceManager.get         


        
8条回答
  •  借酒劲吻你
    2020-11-22 07:44

    this accepted answer is ok, as for me it is creating new instance each time the activity resumes

    so how about keeping the reference to the listener within the activity

    OnSharedPreferenceChangeListener listener = new OnSharedPreferenceChangeListener(){
          public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
             // your stuff
          }
    };
    

    and in your onResume and onPause

    @Override     
    public void onResume() {
        super.onResume();          
        getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(listener);     
    }
    
    @Override     
    public void onPause() {         
        super.onPause();          
        getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(listener);
    
    }
    

    this will very similar to what you are doing except we are maintaining a hard reference.

提交回复
热议问题