安卓系统中的UUID.randomUUID冲突



我知道UUID.randomUUID大部分都很好:java';s UUID.randomUUID?

有人在安卓系统上遇到过UUID.randomUUID的问题吗?由于安卓系统使用Dalvik VM。

我无法再现碰撞。然而,以下代码是可疑的(基于我的生产报告),并且在两个不同的进程上运行时可能会导致冲突(两个具有相同代码和不同包的应用程序,例如免费应用程序与专业应用程序)?

private static final String PREFIX = Long.toString(UUID.randomUUID().getLeastSignificantBits());

任何想法/经验都会有所帮助!

正如我所看到的,http://docs.oracle.com/javase/7/docs/api/java/util/UUID.html最低有效数字由三个字段组成:

 0xC000000000000000 variant
 0x3FFF000000000000 clock_seq
 0x0000FFFFFFFFFFFF node

如果不获取所有UUID,则会增加发生冲突的几率。把它都像private static final String PREFIX = UUID.randomUUID().toString();

这样,你就会减少碰撞的机会。

最新更新