SharedPreferences ドキュメントを見ると、次のように書かれています。
"注: 現在、このクラスは複数のプロセスでの使用をサポートしていません。これは後で追加されます。"
したがって、それ自体はスレッドセーフではないようです。しかし、commit() と apply() に関してどのような保証がなされているのでしょうか?
例えば:
synchronized(uniqueIdLock){
uniqueId = sharedPreferences.getInt("UNIQUE_INCREMENTING_ID", 0);
uniqueId++;
sharedPreferences.edit().putInt("UNIQUE_INCREMENTING_ID", uniqueId).commit();
}
この場合、uniqueId が常に一意であることが保証されますか?
そうでない場合、持続するアプリケーションの一意の ID を追跡するより良い方法はありますか?