나는 독특한 메시지 ID를 생성하기 위해 채팅 응용 프로그램을 만들고 있습니다. 중복 된 메시지 ID를 만들 수 없습니까?독특한 메시지 ID 만들기 뭐가 앱처럼
답변
꽤 복잡한 아마보기의 고유 ID 점에서 좋은 난수의 하나입니다. 그래서 어떻게 소스 코드를 생성하는지 볼 수있는 소스 코드를 살짝 들여다 볼 수 있습니다. 후세 여기 자신의 공식 문서에서 정의를 떠나
:
하며 Object는 생성 할 빠르고 가능성이 독특한, 작은, 및 정렬합니다. ObjectId가 값은 구체적으로 상기 제 4 바이트는 ObjectId가 창조을 반영 소인있는 12 바이트, 구성 몽고의 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")
귀하의 가난한 설명에 기초하여 화합물 ID를 생성 할 수 있습니다. 예를 들어 사용자 ID + 타임 스탬프로 ides를 만들 수 있습니다. 이 패턴을 사용하면 사용자 ID 길이가 모든 ides에서 동일해야합니다. 사실로
String uniquemsgid= userid+ System.currentTimeMillis();
, 사용자를 : 그렇지 않은 경우 그래서, 당신은 당신의 현재 ID가 사용자 십오 더 나은 설명을
의 모든 동일한 길이를 얻을 befor을 "0"을 추가해야 타임 스탬프가이 사용자에 대해 고유 한 고유 한 ID가 있어야합니다. 주의 : 타임 스탬프 또는 날짜 형식 만 사용하는 경우이 메서드는 고유 한 메시지 ID를 보장 할 수 없습니다. 두 명의 사용자가 한 순간에 메시지를 만들 수 있기 때문에
하나를 생성하는 방법은 다양 할 수 있습니다! 한 가지 일반적인 방법은 타임 스탬프 값을 생성하고 고유 한 ID로 사용하는 것입니다.
예를 들어, 당신은이 작업을 수행 할 수 있습니다
public int createID(){
Date now = new Date();
int id = Integer.parseInt(new SimpleDateFormat("ddHHmmss", Locale.US).format(now));
return id; }
당신은 또한 UR 애플 리케이션을 필요에 따라 더 독특한 만들려고하고 문자열을 만들고 그것으로 특정 문자열 형식을 추가 할 수 있습니다!
다음과 같이 만들 수 있습니다. Random randomId= new Random(); int id = randLan.nextInt(99999) + 1;
그런 다음 ID가 이미 주어 졌는지 확인하고, 그렇다면 다시 시도하십시오. 그렇지 않은 경우 다시 시도하십시오.
if (randomId == someOtherId), 동일한 프로세스를 다시 수행하십시오.
이 경우 기기 IMEI 번호를 사용하는 것이 좋습니다.이 번호는 항상 독특하고 쉽게 얻을 수 있습니다.
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
위의 권한을 매니페스트 파일에 추가 한 다음 아래 두 줄을 사용하여 IMEI를 가져옵니다. MongoDB를의 ObjectId
TelephonyManager mngr = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
long id = Long.parseLong(mngr.getDeviceId());
더 사용하여 MongoDB. _id는 당신을위한 ID를 생성 할 수 있습니다. –
[Android SMS 설정 고유 ID] (http://stackoverflow.com/questions/11377730/android-sms-setting-unique-id)의 가능한 복제본 – mabe02