Jan*_*cci 6 io android preferences changelistener
我有一个首选项,控制我的应用程序是否在用户单击按钮时播放声音(经常这样做,想到计算器).每次用户单击按钮时,都会调用以下方法:
private void playButtonClickSound() {
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(parentActivity);
boolean sounds = sharedPrefs.getBoolean("prefSounds", false);
if (sounds) {
// blah
}
}
Run Code Online (Sandbox Code Playgroud)
我认为阅读偏好可能是一项昂贵的操作(类似于I/O操作,因为首选项是持久的),并且由于用户经常点击按钮,因此以这种方式执行操作可能是个坏主意.
一般来说,经常读/写偏好是个坏主意吗?如果是这样,可能还有其他方式,例如注册首选项更改侦听器以在首选项更改时收到通知?
坦率地说,我在UI线程中做了我的全部,无论我是否应该,并且我从未注意到即使在较慢的设备上也有轻微的犹豫.它非常快.这就是说,它是 I/O,这样做异步肯定不会是一个坏事情.对于写入,如果您的目标是API 9及更高版本,则可以使用apply()而不是commit()异步为您进行写入.
至于你关于偏好改变听众的问题,是的,你也可以这样做:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
prefs.registerOnSharedPreferenceChangeListener(new OnSharedPreferenceChangeListener() {
@Override
public void onSharedPreferenceChanged(SharedPreferences preferences, String key) {
if("my_preference_key".equals(key) {
//Handle it here
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1611 次 |
| 最近记录: |