【发布时间】:2011-06-09 06:24:42
【问题描述】:
看着SharedPreferences docs 它说:
"注意:目前这个类没有 支持跨多个进程使用。 这将在稍后添加。”
所以它本身似乎不是线程安全的。但是,commit() 和 apply() 做了什么样的保证呢?
例如:
synchronized(uniqueIdLock){
uniqueId = sharedPreferences.getInt("UNIQUE_INCREMENTING_ID", 0);
uniqueId++;
sharedPreferences.edit().putInt("UNIQUE_INCREMENTING_ID", uniqueId).commit();
}
在这种情况下是否可以保证 uniqueId 始终是唯一的?
如果没有,是否有更好的方法来跟踪持续存在的应用程序的唯一 ID?
【问题讨论】:
-
示例代码同步到非最终字段并更改它。我怀疑你想这样做。
-
uniqueIdLock是什么?它在哪里定义?它是静态的,最终公开的等吗?另外,也许您应该切换接受的答案?? -
@Bloodboiler 在这种情况下会发生什么?
标签: android thread-safety sharedpreferences