2016-11-17 121 views
0

我正在創建聊天應用程序,所以想要生成唯一的消息ID。 是否有可能永遠不會創建重複的消息ID。創建唯一的消息ID像什麼應用程序

+0

更好地利用MongoDB的。 _id可以爲你創建一個ID。 –

+0

[Android SMS設置唯一ID]的可能重複(http://stackoverflow.com/questions/11377730/android-sms-setting-unique-id) – mabe02

回答

4

MongoDB的ObjectId是相當複雜的可能是從一個獨特的ID點好隨機性之一。 所以你可以在他們的源代碼中查看它們是如何生成它的。

離開這裏從他們的官方文檔定義爲後人:

的ObjectID小,可能獨樹一幟,迅速生成,並下令。 的ObjectId值包括12個字節,其中第一個四個字節是 時間戳反映的ObjectId的創建,特別是:蒙戈的ObjectID的

a 4-byte value representing the seconds since the Unix epoch, 
a 3-byte machine identifier, 
a 2-byte process id, and 
a 3-byte counter, starting with a random value. 

實施例:

ObjectId("507f1f77bcf86cd799439011") 
1

根據您的不良描述,您可以創建複合ID。例如,您可以使用用戶名+時間戳創建您的ide。如果你使用這個模式,你的用戶ID長度對於所有的ide都是一樣的。所以,如果實在不行,你必須加「0」 befor當前的ID來獲得平等的長度爲所有用戶的IDE

更好的說明:

String uniquemsgid= userid+ System.currentTimeMillis(); 

作爲事實上,你的用戶有一個唯一的ID時間戳是唯一的這個用戶。 注意:如果您僅使用時間戳或任何格式的日期,則此方法不能保證唯一的消息ID。因爲兩個用戶可以立刻創建消息

0

可能有很多方法來生成一個!一種常見的方法是生成時間戳值並將其用作唯一的ID。

例如,你可以這樣做:

public int createID(){  
Date now = new Date();  
int id = Integer.parseInt(new SimpleDateFormat("ddHHmmss", Locale.US).format(now));  
return id; } 

你也可以嘗試,並使其字符串,並將其添加任何特定的字符串格式,使之根據烏拉圭回合的應用需要更獨特!

0

你可以製作一個Random randomId= new Random(); int id = randLan.nextInt(99999) + 1; 然後你檢查是否已經給出了Id,如果是,再試一次,如果沒有,你有一個Id。

if(randomId == someOtherId),再次執行相同的過程。

0

您可能想要使用設備IMEI號碼,因爲它始終是唯一且很容易獲得的。

<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 

添加上述許可在您的清單文件,然後使用下面兩行,以獲得IMEI。

TelephonyManager mngr = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); 
long id = Long.parseLong(mngr.getDeviceId()); 
相關問題