onSharedPreferenceChanged和variants_seed_native_stored

时间:2018-10-02 12:06:20

标签: java android

由于在意外地触发onSharedPreferenceChanged()的情况下,在 Moto Z2 Play Android 8.0.0 上运行的应用程序开始出现奇怪的崩溃,但在模拟器上却没有,

>

经调查,我发现首选项“ variations_seed_native_stored ”已由“某人”更改,这不是我的应用程序(看起来它来自Chromium / WebView,我确实在该应用程序。)

这是预期的行为吗? “ SharedPreferences”中的“ Shared”意味着多余的偏好可以存储在这里吗?

如果是这样,如果我真的共享名称空间,我如何确保我没有首选项名称冲突?

特定详细信息:

onSharedPreferenceChanged()中,我在RecyclerView上调用了notifyDataSetChanged()(因为设置将更改数据的显示方式),但是意外的“ variations_seed_native_stored ”会创建“无法调用此RecyclerView正在计算布局时使用“方法”。-ViewHolder中有一个WebView,我想它会引起循环调用。发生此错误后,AndroidWebView中有一个很长的Breakpad Microdump:69.0.34.97.100。

在用户具有“将首选项重置为默认值”之后,这种情况只会发生一次,因为我执行了“ prefs.edit().clear().apply()”,删除了“ variations_seed_native_stored ”,从而使WebView(?)下次我更新RecyclerView时再次将其写入,触发崩溃。

是的,如果密钥=“ variations_seed_native_stored ”,我可以通过在onSharedPreferenceChanged()上不执行任何操作来解决此问题,但是我会担心google决定存储的每个新偏好设置矿。是否建议我根据自己的偏好列表“过滤” onSharedPreferenceChanged()

谢谢!

1 个答案:

答案 0 :(得分:1)

SharedPreferences不应保存许多数据。用另一个名称创建一个SharedPreference,并确保它仅由您的代码使用。