android - 注册和取消注册 onSharedPreferenceListeners

标签 android listener sharedpreferences

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

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

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

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

最佳答案

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

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

Q1) 是的,您在共享首选项超出范围之前取消注册,即在 onCreate 中注册,在 onPause 中取消注册

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

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

关于android - 注册和取消注册 onSharedPreferenceListeners,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10708363/

相关文章:

java - 如何使用java打印android中进程返回的数据

Android SharedPreferences.Editor putStringSet 方法不可用

java - 按钮 onClickListener 在 Android 中无法播放声音

android - SharedPreferences 的 MODE_MULTI_PROCESS 是否不如 MODE_PRIVATE 安全

android onDestroy 仅在 vd 上工作正常

OpenCV 中的 Android 按位异或错误

android - Buttonstyle - 尺寸类型不允许

android - 自 Compose BOM 2023.08.00 以来,仪器测试失败,因为惰性列表更改似乎在层次结构中留下了旧节点

java - 在android中进行回调的简单方法 - AndroidX

java - 从另一个类访问 MainActivity 中的方法