OnSharedPreferenceChangeListener的范围

时间:2012-09-11 07:57:15

标签: android android-preferences

我开发了一个带推送服务的应用程序,我在接收推送时改变了一些偏好,并在主要活动的onCreate()函数中为该特定首选项编写了首选项更改监听器,并将其注册为这样:

static  OnSharedPreferenceChangeListener listner;
SharedPreferences prefs;

// onCreate

prefs=getSharedPreferences(GCMIntentService.MY_PREFS, MODE_PRIVATE);
listner=new OnSharedPreferenceChangeListener() {

    @Override
    public void onSharedPreferenceChanged(SharedPreferences sp, String key) {
        //Here is my code    
}

prefs.registerOnSharedPreferenceChangeListener(listner);

如果我的活动没有运行或我的申请被关闭,我是否会被调用,我感到很困惑。

2 个答案:

答案 0 :(得分:0)

如果您想接收有关设置更改的通知,无论什么是活动状态,那么我建议扩展Application对象并将您的侦听器代码移动到那里,就像您应该在{中注册您的监听器的活动一样{1}}并取消注册onResume()。因此,如果用户离开(这是他/她推出偏好活动的情况),您将不会收到通知。

答案 1 :(得分:0)

经过长时间的研究和测试,我终于意识到监听器的范围是应用程序运行或活动处于运行状态。

关闭应用程序后,onPreferenceChangeListener将不会监听任何事件。

可能对他人有所帮助。

无论如何,谢谢大家。