望着SharedPreferences docs它说:SharedPreferences和线程安全
“注:目前这一类确实在多个流程不 支持使用 这将在以后添加。”
因此,它本身看起来并不是线程安全的。然而,对commit()和apply()做出了什么样的保证呢?
例如:
synchronized(uniqueIdLock){
uniqueId = sharedPreferences.getInt("UNIQUE_INCREMENTING_ID", 0);
uniqueId++;
sharedPreferences.edit().putInt("UNIQUE_INCREMENTING_ID", uniqueId).commit();
}
会是保证了UNIQUEID总是在这种情况下独特之处?
如果没有,是否有更好的方法来跟踪持续存在的应用程序的唯一ID?
示例代码与非最终字段同步并对其进行更改。我怀疑你想这样做。 – Bloodboiler 2013-02-07 15:07:46
哎呀,很好。 – cottonBallPaws 2013-02-07 16:55:16
什么是uniqueIdLock?它在哪里定义?它是静态的,最终的公众等?也许你应该转换接受的答案? – 2013-09-18 15:27:24