java - 如何从首选项同步 getter 和 setter?
问题描述
我使用 JavaPreferences
来存储一些应用程序数据。我想在运行时将配置存储在变量中。但是当我需要设置一个值时,如何实现同步呢?
这只是一个非常简单的例子来理解我的问题:
public class Configuration {
private static Preferences preferences = Preferences.userRoot().node("nodeName");
private boolean isDarkMode;
public Configuration() {
// Get boolean value or return false if it does not exist
this.isDarkMode = preferences.getBoolean("DARK_MODE", false);
}
//User changes setting to dark mode and the program needs to set the value to store it
//TODO How can I synchronize this method?
public static void setDarkMode(boolean b) {
preferences.putBoolean("DARK_MODE", b);
this.isDarkMode = b;
}
public static boolean isInDarkMode() {
return isDarkMode;
}
}
根据我的理解,只写synchronized
getter 和 setter 是不正确的,是吗?什么是有效的解决方案?
解决方案
首选项是线程安全的,可以从多个线程访问,而无需同步共享资源。您可以在写入时调用 flush() 以确保立即进行更改。不要创建像 isDarkMode 这样的类成员,而是直接引用 Preferences。
推荐阅读
- android - 为多个 target_cpu 构建 Chromium
- css - 将鼠标悬停在项目上时如何在有序列表中的所有文本下划线
- python - 在熊猫中将列重塑或枢转为索引?
- xslt-1.0 - 使用 XSLT 从 xml 中提取某些属性名称及其值
- android - Android 不响应 HTTP 请求
- angular - 会话超时注销 :: 由 setTimeout 调用时出现 RouterExtensions 错误
- c# - 如何分发 Blazor 服务器端 webapp 以供本地使用?
- react-native - 如何使用反应原生导航栏
- typescript - 注入属性的 VS 代码的 Nuxt ts 类型
- regex - 如何使两个不同的正则表达式合二为一?