查看SharedPreferences 文档,它说:
“注意:目前这个类不支持跨多个进程使用,这个会在以后增加。”
所以它本身似乎不是线程安全的。但是,对于 commit() 和 apply() 做了什么样的保证?
例如:
synchronized(uniqueIdLock){
uniqueId = sharedPreferences.getInt("UNIQUE_INCREMENTING_ID", 0);
uniqueId++;
sharedPreferences.edit().putInt("UNIQUE_INCREMENTING_ID", uniqueId).commit();
}
在这种情况下,是否可以保证 uniqueId 始终是唯一的?
如果没有,是否有更好的方法来跟踪持续存在的应用程序的唯一 ID?