查看SharedPreferences文档,它说:
"注意:目前此类不支持在多个进程中使用。稍后将添加此功能。"
所以从本身来看,它似乎不是线程安全的。但是,在commit()和apply()方面做了什么样的保证?
例如:
synchronized(uniqueIdLock){
uniqueId = sharedPreferences.getInt("UNIQUE_INCREMENTING_ID", 0);
uniqueId++;
sharedPreferences.edit().putInt("UNIQUE_INCREMENTING_ID", uniqueId).commit();
}
在这种情况下,uniqueId是否保证始终是唯一的?
如果不是,是否有更好的方法来跟踪应用程序中持久存在的唯一标识符?
uniqueIdLock
是什么?它在哪里定义?它是静态的、最终的公共等吗?另外,也许你应该切换接受的答案? - Mr_and_Mrs_D