gpt4 book ai didi

android - 缓存 SharedPreferences bool 值 : Would performance justify increased complexity?

转载 作者:太空狗 更新时间:2023-10-29 13:35:27 25 4
gpt4 key购买 nike

在我的一个 onTouch() 监听器中,我目前在决定如何处理触摸事件之前检查 bool 用户设置:

boolean shouldCue = preferences.getBoolean(v.getContext().getString(R.string.should_cue), true);

观察LogCat,我可以看到当用户触摸屏幕时,这个语句被调用了无数次!

所以,我正在考虑通过实现 onSharedPreferenceChanged() 来“缓存”shouldCue bool 值听众。

我当然可以继续实现并...在我超快的 Android 设备上观察可以忽略不计的差异。我不可能在“大多数 Android 设备”上对此进行测试,因为变化太多了。

所以我的问题是:

  1. onSharedPreferenceChanged()即使未通过 UI 更改首选项也会被调用? (即通过 editor.commit(); 以编程方式)
  2. 假设 SharedPreferences bool 值可以从 UI 或编程方式(但不能同时)修改,则缓存它会强制要求 @Synchronized处理?
  3. 对缓存方法与非缓存方法之间的性能差异有何估计? (为了简化问题,假设我们指的是像 Droid 1 A855 这样的旧手机)

最佳答案

在我看来,最好避免在 onTouch() 方法中读取首选项:它的触发速度非常快,并且从首选项中读取意味着解析 xml(这不是您每秒应该执行这么多次的事情)。您可以在模拟器上试用它,看看它是否 react 足够快,但最好在其他地方阅读它或找到另一种方法来存储/获取此 bool 值。

编辑:关于问题:

1) 是的,即使偏好根本没有改变

2) 是的,可以这样实现,但这可能会导致很多问题,特别是如果您打算重用 View

3) 由于许多因素(硬件、操作系统版本、启用的 jit 等),我无法准确估计对其他设备的影响,但在没有基准测试的情况下,缓存方法似乎是最有效的。

您真的必须在 onTouch() 方法中操作该 bool 值吗?在这种情况下,为什么不定义钩子(Hook)或监听器?

关于android - 缓存 SharedPreferences bool 值 : Would performance justify increased complexity?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11104736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com