设备上线处理方法 - deviceOnLine() 函数解析
设备上线处理方法 - deviceOnLine() 函数解析
该方法用于处理设备上线事件,主要逻辑包括:
- 解析设备ID: 将传入的设备ID字符串转换为Long类型。
- 判断设备是否存在: 检查设备ID是否已经在
allOnlineCarsRealRecordsMap中。 - 处理设备在线:
- 如果设备已存在,则停止计时器。
- 如果设备不存在,则新增一条设备记录,包括将记录存入数据库和放入
allOnlineCarsRealRecordsMap中。
public void deviceOnLine(String moveDeviceId) {
try {
Long moveDeviceIdLong = Long.parseLong(moveDeviceId);
// 设备上线
Map<Long, CarRealRecord> allOnlineCarsRealRecordsMap = GM.me.getAllOnlineCarsRealRecordsMap();
if (allOnlineCarsRealRecordsMap.containsKey(moveDeviceIdLong)) {
// 当前设备ID存在在allOnlineCarsRealRecordsMap中,停止计时
allOnlineCarsRealRecordsMap.get(moveDeviceIdLong).stopTimer();
} else {
// 当前设备ID不存在Map中,新增一条记录
// 先存入数据库,再放入map中
CarRealRecord carRealRecord = invokeAddCarRealRecordAction(moveDeviceId);
if (carRealRecord != null) {
// 数据库返回对象,再存入Map
allOnlineCarsRealRecordsMap.put(moveDeviceIdLong, carRealRecord);
}
}
} catch (Exception ignored) {
}
}
代码说明
moveDeviceId: 设备ID字符串。allOnlineCarsRealRecordsMap: 存储所有在线设备记录的Map。stopTimer(): 停止设备计时器方法。invokeAddCarRealRecordAction(): 将设备记录存入数据库的方法。
优化点
- 优化代码结构,使用
containsKey判断设备是否存在,避免了遍历整个Map。 - 使用
try-catch块捕获异常,防止程序崩溃。 - 使用简洁的注释,方便阅读理解。
其他建议
- 可以考虑在
stopTimer()方法中添加一些日志记录,方便调试和监控。 - 可以考虑使用线程池来管理
invokeAddCarRealRecordAction()方法,提高效率。
原文地址: https://www.cveoy.top/t/topic/qEwH 著作权归作者所有。请勿转载和采集!