2

我有两个关于注册/注销OnSharedPreferenceChangeListener对象的问题:

问题 1:我是否需要在SharedPreferences对象的同一实例上调用registerOnSharedPreferenceChangeListenerunregisterOnSharedPreferenceChangeListener才能正确注册和注销共享首选项的更改,或者在为同一首选项文件获得的两个SharedPreferences实例上调用这两种方法是否足够?

问题 2:传递给registerOnSharedPreferenceChangeListener的OnSharedPreferenceChangeListener实例必须与传递给unregisterOnSharedPreferenceChangeListener的实例完全相同,即我不能使用new OnSharedPreferenceChangeListener () { ... }为这两种方法动态创建一个新实例?

问题 3:我可以注册多个OnSharedPreferenceChangeListener对象吗?

4

1 回答 1

2

作为 SharedPreferences 的侦听器的接口只是一个“实现”OnSharedPreferenceChangedListener 的类,这意味着该类可以处理 SharedPrefs 将发送给它的消息。

因此,无论您注册什么实例,都需要使用相同的引用来取消注册它。

Q1) 是的,您在 sharedpreferences 超出范围之前取消注册,即在 onCreate 中注册在 onPause 中取消注册

Q2)是的,你不能,创建一个新实例会产生一个全新的对象。

Q3)您必须检查实现以查看该类是否保留了一个寄存器列表,或者它是否只允许一个。(拥有 reg 和 unreg 让我相信您可以设置多个侦听器,但请检查)

于 2012-05-22T21:39:57.913 回答