码迷,mamicode.com
首页 > 其他好文 > 详细

SharedPreference注册OnSharedPreferenceChangeListener一直无法回调问题

时间:2014-08-20 21:02:02      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:android   style   blog   color   使用   ar   问题   div   

注册代码如下:

1 SharedPreferences sp = getSharedPreferences("AndroidDemo", Context.MODE_PRIVATE);
2 sp.registerOnSharedPreferenceChangeListener(new OnSharedPreferenceChangeListener() {
3     @Override
4     public void onSharedPreferenceChanged(SharedPreferences arg0, String arg1) {
5     }
6 });
 

无法回调主要是因为注册的监听器使用了匿名内部类,由于SharedPreferences保持在WeakHashMap中,这意味着你不能监听一个匿名内部类,因为它会成为垃圾收集的目标,只要你离开目前的范围,它将会被垃圾收集,从WeakHashMap中删除并停止工作。

应该使用当前类作为监听器,即在当前类中实现SharedPreferences.OnSharedPreferenceChangeListener接口,只要当前类的实例没有被回收,就可以保证回调的有效性。

所以注册此监听时,最好不要使用匿名内部类,否则会由于垃圾回收机制导致此监听无效,而无法回调。

SharedPreference注册OnSharedPreferenceChangeListener一直无法回调问题,布布扣,bubuko.com

SharedPreference注册OnSharedPreferenceChangeListener一直无法回调问题

标签:android   style   blog   color   使用   ar   问题   div   

原文地址:http://www.cnblogs.com/xingfuzzhd/p/3925442.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!