From 5987345991ce706af3730d98216fbf8bcf461e8f Mon Sep 17 00:00:00 2001 From: xinfengkun Date: Mon, 14 Jul 2025 15:06:42 +0800 Subject: [PATCH] =?UTF-8?q?[8.1.2][adas]=20=E4=BF=AE=E5=A4=8D=E6=B6=88?= =?UTF-8?q?=E6=81=AFID=E7=94=9F=E4=BA=A7=E5=99=A8=E5=9C=A8=E7=89=B9?= =?UTF-8?q?=E6=AE=8A=E6=83=85=E5=86=B5=E4=B8=8B=E5=BC=95=E8=B5=B7=E7=9A=84?= =?UTF-8?q?=E5=B4=A9=E6=BA=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../adas/high/common/MessageIdGenerator.java | 48 ++++++++++--------- 1 file changed, 25 insertions(+), 23 deletions(-) diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/MessageIdGenerator.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/MessageIdGenerator.java index 7e7f4a2e89..fa3f35885c 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/MessageIdGenerator.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/MessageIdGenerator.java @@ -17,11 +17,11 @@ import mogo.telematics.pad.MessagePad; public class MessageIdGenerator { private static final String TAG = "MessageIdGenerator"; private static volatile MessageIdGenerator INSTANCE; - private final static int DEFAULT_COUNT = 30;//默认保留数量 - private final static String KEY_NAME = "send_message_id";//序列化名称 + private static final int DEFAULT_COUNT = 30;//默认保留数量 + private static final String KEY_NAME = "send_message_id";//序列化名称 private final Adas.MessageIdInfo.Builder messageIdInfoBuilder; - private Adas.LastMessage lastMessage = null; + private Adas.LastMessage lastMessage; private final long data;//日期long值 @@ -45,25 +45,22 @@ public class MessageIdGenerator { calendar.set(Calendar.MILLISECOND, 0); data = calendar.getTimeInMillis(); - Adas.MessageIdInfo messageIdInfo = null; + Adas.MessageIdInfo.Builder builder = Adas.MessageIdInfo.newBuilder(); byte[] bytes = MMKVUtils.getInstance().getBytes(KEY_NAME); if (bytes != null) { try { - messageIdInfo = Adas.MessageIdInfo.parseFrom(bytes); + Adas.MessageIdInfo parsed = Adas.MessageIdInfo.parseFrom(bytes); + builder.putAllLastMessages(parsed.getLastMessagesMap()); } catch (InvalidProtocolBufferException e) { e.printStackTrace(); } } - if (messageIdInfo == null) { - messageIdInfoBuilder = Adas.MessageIdInfo.newBuilder(); - } else { - messageIdInfoBuilder = messageIdInfo.toBuilder(); - if (messageIdInfoBuilder.getLastMessagesCount() >= DEFAULT_COUNT) { - long minValue = Collections.min(messageIdInfoBuilder.getLastMessagesMap().keySet()); - messageIdInfoBuilder.removeLastMessages(minValue); - save(); - } + // 修剪过期数据(如果超出默认保留数量) + if (builder.getLastMessagesCount() >= DEFAULT_COUNT) { + long minKey = Collections.min(builder.getLastMessagesMap().keySet()); + builder.removeLastMessages(minKey); } + messageIdInfoBuilder = builder; initLastMessageData(); } @@ -108,19 +105,24 @@ public class MessageIdGenerator { } /** + * 获取当前消息ID,并进行自增与保存 * TODO 10000次存储平均耗时=0.2036132830000002毫秒 * - * @param timestamp - * @param type - * @return + * @param timestamp 当前时间 + * @param type 消息类型 + * @return 自增后的消息ID */ public long getId(long timestamp, MessagePad.MessageType type) { - long id = lastMessage.getMsgID() + 1; - CupidLogUtils.i(TAG, "自增ID=" + id); - lastMessage = lastMessage.toBuilder().setTimestamp(timestamp).setMsgType(type).setMsgID(id).build(); - messageIdInfoBuilder.putLastMessages(data, lastMessage); - save(); + long newId = lastMessage.getMsgID() + 1; + CupidLogUtils.i(TAG, "自增ID=" + newId); + try { + lastMessage = lastMessage.toBuilder().setMsgID(newId).setTimestamp(timestamp).setMsgType(type).build(); + messageIdInfoBuilder.putLastMessages(data, lastMessage); + save(); // test(); - return id; + } catch (Exception e) { + e.printStackTrace(); + } + return newId; } }