修复和优化运维心跳功能

hdrplus
Matthew 1 year ago
parent 4d86ebe148
commit 5faeadce9d

@ -240,7 +240,6 @@ public class MpMasterService extends Service {
intentFilter = new IntentFilter(SimUtil.SMS_SEND_ACTION); intentFilter = new IntentFilter(SimUtil.SMS_SEND_ACTION);
registerReceiver(mSmsSnedReceiver, intentFilter); registerReceiver(mSmsSnedReceiver, intentFilter);
// AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); // AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
// startMaster(false); // startMaster(false);
@ -553,40 +552,35 @@ public class MpMasterService extends Service {
timeout = mQuickHeartbeatDuration; timeout = mQuickHeartbeatDuration;
registerHeartbeatTimer(SystemClock.elapsedRealtime() + timeout * 1000); registerHeartbeatTimer(SystemClock.elapsedRealtime() + timeout * 1000);
} else { } else {
long closestTime = 0; long closestTime = -1;
if (mAbsHeartbeatTimes != null && mAbsHeartbeatTimes.length > 0) { if (mAbsHeartbeatTimes != null && mAbsHeartbeatTimes.length > 0) {
long currentTimeMillis = System.currentTimeMillis();
long heartTimeMills = currentTimeMillis + timeout * 1000;
Date dt = new Date(); Date dt = new Date();
for (int i = 0; i < mAbsHeartbeatTimes.length; i++) { long ts = dt.getTime();
int mAbsHeartbeatTime = mAbsHeartbeatTimes[i]; ts -= ts % 1000;
int hour = mAbsHeartbeatTime / 60;
int minute = mAbsHeartbeatTime % 60;
if (hour >= 24) {
continue;
}
dt.setHours(hour); dt.setHours(0);
dt.setMinutes(minute); dt.setMinutes(0);
dt.setSeconds(0); dt.setSeconds(0);
long selecttime = dt.getTime(); long zeroPoint = dt.getTime();
if (selecttime > currentTimeMillis && selecttime < heartTimeMills) { zeroPoint -= zeroPoint % 1000;
closestTime = selecttime;
long offsetTs = (ts - zeroPoint) / 1000;
for (int i = 0; i < mAbsHeartbeatTimes.length; i++) {
if (mAbsHeartbeatTimes[i] >= offsetTs) {
closestTime = mAbsHeartbeatTimes[i];
break; break;
} else {
if (i == (mAbsHeartbeatTimes.length - 1)) {
closestTime = heartTimeMills;
}
} }
} }
if (closestTime > 0) { if (closestTime == -1) {
registerAbsHeartbeatTimer(closestTime); // next day
closestTime = mAbsHeartbeatTimes[0] + 86400;
} }
registerAbsHeartbeatTimer(zeroPoint + closestTime * 1000);
} else { } else {
registerHeartbeatTimer(SystemClock.elapsedRealtime() + timeout * 1000); registerHeartbeatTimer(System.currentTimeMillis() + timeout * 1000);
} }
} }
} }

Loading…
Cancel
Save