我开发了一个带推送服务的应用程序,我在接收推送时改变了一些偏好,并在主要活动的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);
如果我的活动没有运行或我的申请被关闭,我是否会被调用,我感到很困惑。
答案 0 :(得分:0)
如果您想接收有关设置更改的通知,无论什么是活动状态,那么我建议扩展Application
对象并将您的侦听器代码移动到那里,就像您应该在{中注册您的监听器的活动一样{1}}并取消注册onResume()
。因此,如果用户离开(这是他/她推出偏好活动的情况),您将不会收到通知。
答案 1 :(得分:0)
经过长时间的研究和测试,我终于意识到监听器的范围是应用程序运行或活动处于运行状态。
关闭应用程序后,onPreferenceChangeListener将不会监听任何事件。
可能对他人有所帮助。
无论如何,谢谢大家。