望着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