在我的一个 onTouch() 侦听器中,我目前在决定如何处理触摸事件之前检查布尔用户设置:
boolean shouldCue = preferences.getBoolean(v.getContext().getString(R.string.should_cue), true);
观察 LogCat 可以看到,当用户触摸屏幕时,这个语句被调用了无数次!
shouldCue
因此,我正在考虑通过实现onSharedPreferenceChanged()侦听器来“缓存”该布尔值。
我当然可以继续实现这一点,然后……在我的超快 Android 设备上观察到可以忽略不计的差异。我不可能在“大多数安卓设备”上测试这个,因为有太多的变化。
所以我的问题是:
- 即使未通过 UI 更改首选项,是否会调用onSharedPreferenceChanged () ?(即通过编程方式
editor.commit();
) - 如果 SharedPreferences boolean 可以从 UI 或以编程方式修改(但不能同时进行),缓存它会强制 @Synchronized处理吗?
- 关于缓存与非缓存方法之间的性能差异的任何估计?(为了简化问题,假设我们指的是像 Droid 1 A855 这样的旧手机)