java - onSharedPreferenceChanged 和variations_seed_native_stored
问题描述
我在Moto Z2 Play Android 8.0.0(但不是在模拟器上)上运行的应用程序开始出现奇怪的崩溃,因为onSharedPreferenceChanged()
被意外触发。
经过调查,我发现偏好“ variations_seed_native_stored ”正在被“某人”更改,这不是我的应用程序(看起来它来自我在应用程序中使用的 Chromium/WebView)。
这是预期的行为吗?“SharedPreferences”中的“Shared”意味着可以将无关的偏好存储在那里?
如果是这样,如果我真的在共享名称空间,我将如何确保我没有偏好名称冲突?
具体细节:
在onSharedPreferenceChanged()
我在 RecyclerView 上调用 a notifyDataSetChanged()
(因为设置会改变数据的呈现方式),但意外的“ variations_seed_native_stored ”创建了一个“在 RecyclerView 计算布局时无法调用此方法” - ViewHolder 中有一个 WebView,我想它导致循环调用。出现此错误后,AndroidWebView:69.0.34.97.100 会出现一个很长的 Breakpad Microdump。
这只会发生一次,在用户“将首选项重置为默认值”之后,因为我做了一个“ prefs.edit().clear().apply()
”,它删除了“ variations_seed_native_stored ”,使得 WebView(?) 在下次更新 RecyclerView 时再次写入,触发崩溃.
onSharedPreferenceChanged()
是的,我可以通过对if 键 =“ variations_seed_native_stored ”什么都不做来解决这个问题,但是我会担心谷歌决定与我一起存储的每一个新偏好。是否建议我onSharedPreferenceChanged()
根据自己的偏好列表“过滤”?
谢谢!
解决方案
SharedPreferences
不应该保存很多数据。使用另一个名称创建一个SharedPreference
并确保它仅由您的代码使用。
推荐阅读
- vhdl - 16 到 1 多路复用器在 vhdl 中使用 2 到 1 多路复用器
- sql - FROM 和 WHERE 类中的 SQL 子查询
- nginx - 仅使用 dnsmasq 和 nginx 重定向某些路径
- mysql - Laradock 无法访问 root@localhost
- python-3.x - 打开后如何阻止.py文件关闭?使用python 3.9?
- sql - 使用 SQL 进行多关键字搜索
- javascript - Angular Karma - 组件未定义
- ios - Xcode 调试器在文件上启用
- python - 当秒数为 0 时,每 15 分钟运行一次 python 程序
- css - 带有宽表和水平滚动条的 Bootstrap4