优化运维心跳的处理

hdrplus
Matthew 1 year ago
parent af1ca401c2
commit dedb77bb70

@ -20,7 +20,6 @@ import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
import android.os.PowerManager;
import android.os.SystemClock;
import android.telephony.SignalStrength;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
@ -42,13 +41,13 @@ import com.xypower.mpmaster.sms.SmsSendReceiver;
import org.json.JSONObject;
import java.io.File;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.TimeZone;
import java.util.logging.FileHandler;
import java.util.logging.Level;
import java.util.logging.Logger;
@ -239,13 +238,6 @@ public class MpMasterService extends Service {
IntentFilter intentFilter;
intentFilter = new IntentFilter(SimUtil.SMS_SEND_ACTION);
registerReceiver(mSmsSnedReceiver, intentFilter);
// AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
// startMaster(false);
startMpApp();
registerHeartbeatTimer();
}
public String getIccid(int number) {
@ -300,6 +292,9 @@ public class MpMasterService extends Service {
mUsingAbsHbTime = masterConfig.usingAbsHbTime != 0;
mHeartbeatDuration = masterConfig.heartbeat * 60; // minute to second
mAbsHeartbeatTimes = masterConfig.absHeartbeats;
if (mAbsHeartbeatTimes != null && mAbsHeartbeatTimes.length > 0) {
Arrays.sort(mAbsHeartbeatTimes);
}
mSeparateNetwork = masterConfig.separateNetwork != 0;
mTimeOfMpAppAlive = masterConfig.mpappMonitorTimeout;
}
@ -456,7 +451,7 @@ public class MpMasterService extends Service {
MicroPhotoContext.AppConfig appConfig = MicroPhotoContext.getMpAppConfig(getApplicationContext());
logger.warning("Start Mntn report:" + masterUrl);
logger.warning("Start Mntn report:" + masterUrl + " Mntn Mode=" + Boolean.toString(mMntnMode) + " QuickHB=" + Boolean.toString(mQuickHbMode));
AppMaster appMaster = new AppMaster(this, masterUrl, appConfig.cmdid, bundleWithMpApp);
appMaster.start();
@ -475,6 +470,7 @@ public class MpMasterService extends Service {
if (TextUtils.equals(ACTION_HEARTBEAT, action)) {
mService.logger.info("Heartbeat Timer Fired ACTION=" + action);
mService.mPreviousHB = null;
mService.registerHeartbeatTimer();
mService.startMaster(false);
@ -550,10 +546,10 @@ public class MpMasterService extends Service {
long timeout = mHeartbeatDuration;
if (mMntnMode && mQuickHbMode) {
timeout = mQuickHeartbeatDuration;
registerHeartbeatTimer(SystemClock.elapsedRealtime() + timeout * 1000);
registerHeartbeatTimer(System.currentTimeMillis() + timeout * 1000);
} else {
long closestTime = -1;
if (mAbsHeartbeatTimes != null && mAbsHeartbeatTimes.length > 0) {
if (mUsingAbsHbTime) {
Date dt = new Date();
long ts = dt.getTime();
ts -= ts % 1000;
@ -564,21 +560,29 @@ public class MpMasterService extends Service {
long zeroPoint = dt.getTime();
zeroPoint -= zeroPoint % 1000;
long offsetTs = (ts - zeroPoint) / 1000;
for (int i = 0; i < mAbsHeartbeatTimes.length; i++) {
if (mAbsHeartbeatTimes[i] >= offsetTs) {
closestTime = mAbsHeartbeatTimes[i];
break;
if (mAbsHeartbeatTimes != null && mAbsHeartbeatTimes.length > 0) {
for (int i = 0; i < mAbsHeartbeatTimes.length; i++) {
if (mAbsHeartbeatTimes[i] > offsetTs) {
closestTime = mAbsHeartbeatTimes[i];
break;
}
}
}
if (closestTime == -1) {
// next day
closestTime = mAbsHeartbeatTimes[0] + 86400;
if (closestTime == -1) {
// next day
closestTime = mAbsHeartbeatTimes[0] + 86400;
}
} else {
closestTime = 9 * 3600 + 13 * 60;
if (offsetTs > closestTime) {
closestTime += 86400;
}
}
registerAbsHeartbeatTimer(zeroPoint + closestTime * 1000);
registerHeartbeatTimer(zeroPoint + closestTime * 1000);
} else {
registerHeartbeatTimer(System.currentTimeMillis() + timeout * 1000);
}
@ -591,6 +595,7 @@ public class MpMasterService extends Service {
if (mPreviousHB != null) {
try {
alarmManager.cancel(mPreviousHB);
mPreviousHB = null;
} catch (Exception ex) {
}
mPreviousHeartbeatTime = 0;
@ -599,25 +604,9 @@ public class MpMasterService extends Service {
alarmIntent.setAction(ACTION_HEARTBEAT);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, alarmIntent, 0);
mPreviousHB = pendingIntent;
mPreviousHeartbeatTime = triggerTime;
alarmManager.setExactAndAllowWhileIdle(AlarmManager.ELAPSED_REALTIME_WAKEUP, triggerTime, pendingIntent);
}
private void registerAbsHeartbeatTimer(long triggerTime) {
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
if (mPreviousHB != null) {
try {
alarmManager.cancel(mPreviousHB);
} catch (Exception ex) {
}
mPreviousHeartbeatTime = 0;
}
Intent alarmIntent = new Intent();
alarmIntent.setAction(ACTION_HEARTBEAT);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, alarmIntent, 0);
Date dt = new Date(triggerTime);
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
logger.info(String.format("Register HB:" + format.format(dt)));
mPreviousHB = pendingIntent;
mPreviousHeartbeatTime = triggerTime;
alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, triggerTime, pendingIntent);
@ -653,6 +642,9 @@ public class MpMasterService extends Service {
Log.i(TAG, "AppPath=" + appPath + " cmdid=" + cmdid);
// startMaster(false);
startMpApp();
registerHeartbeatTimer();
startMaster(false);

Loading…
Cancel
Save