对电池电压新增单线程执行

onereq
liuguijing 3 months ago
parent 49b614b7b9
commit 9c2346befd

@ -52,6 +52,10 @@ import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.concurrent.atomic.AtomicInteger;;
@ -144,6 +148,29 @@ public class MpMasterService extends Service {
private String mIccid1 = null;
private String mIccid2 = null;
//用于创建单例线程保证该线程在项目中唯一
private static final AtomicBoolean created = new AtomicBoolean(false);
// private static Thread batteryVoltageThread;
// public static Thread getInstance(Runnable runnable) {
// if (!created.getAndSet(true)) {
// batteryVoltageThread = new Thread(runnable);
// batteryVoltageThread.start();
// }
// return batteryVoltageThread;
// }
private static ExecutorService batteryVoltageThread;
public static synchronized ExecutorService getSingleThreadExecutor() {
if (batteryVoltageThread == null || batteryVoltageThread.isShutdown()) {
batteryVoltageThread = Executors.newSingleThreadExecutor();
}
return batteryVoltageThread;
}
AtomicInteger reqCode = new AtomicInteger(0);
public MpMasterService() {
@ -427,7 +454,7 @@ public class MpMasterService extends Service {
if (!isMpAppRunning) {
// Restart MpApp
MpMasterService.restartMpApp(context,"MpMST Keep Alive Detection: NO Lock");
MpMasterService.restartMpApp(context, "MpMST Keep Alive Detection: NO Lock");
logger.warning("Restart MpAPP as There is NO Lock");
mTimeToStartMpApp = ts;
return;
@ -443,7 +470,7 @@ public class MpMasterService extends Service {
// MpApp is not running
if (ts - mTimeToStartMpApp >= 1800000) { // 30 minutes 30 * 60 * 1000
if (false) {
MpMasterService.restartMpApp(context.getApplicationContext(),"MpMST Keep Alive Detection");
MpMasterService.restartMpApp(context.getApplicationContext(), "MpMST Keep Alive Detection");
}
logger.warning("Restart MpAPP as it is NOT Running Prev MPAPP HB=" +
@ -694,7 +721,7 @@ public class MpMasterService extends Service {
int restart = intent.getIntExtra("restart", 0);
mService.logger.info("Update Config Fired ACTION=" + action + " restart=" + restart);
if (restart != 0) {
MpMasterService.restartMpMasterApp(context,"Config Updated");
MpMasterService.restartMpMasterApp(context, "Config Updated");
} else {
mService.loadConfig();
mService.registerHeartbeatTimer();
@ -1087,20 +1114,37 @@ public class MpMasterService extends Service {
}
private void buildChargingBatteryVoltage(long ts) {
int val = 0;
for (int idx = 0; idx < 3; idx++) {
val = MpMasterService.getInt(112);
if (val > 0) {
break;
}
if (batteryVoltageThread != null && !batteryVoltageThread.isShutdown()) {
logger.info("电压线程在执行退出");
return;
}
if (val > 0) {
if (val > mMaxBCV) {
mMaxBCV = val;
mMaxBCVTime = ts;
getSingleThreadExecutor().execute(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
logger.info("电压线程编号" + batteryVoltageThread.hashCode());
int val = 0;
for (int idx = 0; idx < 3; idx++) {
logger.info("电压测试第" + idx + "次开始读取");
val = MpMasterService.getInt(112);
logger.info("电压测试第" + idx + "次读取结束 " + val);
if (val > 0) {
break;
}
}
if (val > 0) {
if (val > mMaxBCV) {
mMaxBCV = val;
mMaxBCVTime = ts;
}
}
}
}
});
}
public String getAndResetMaxBCV() {
@ -1163,7 +1207,7 @@ public class MpMasterService extends Service {
if (rebootType == 0) {
logger.warning("Recv REBOOT MpMst APP cmd");
Context context = MpMasterService.this.getApplicationContext();
MpMasterService.restartMpMasterApp(context,reason);
MpMasterService.restartMpMasterApp(context, reason);
} else {
logger.warning("Recv RESET cmd");
SysApi.reboot(MpMasterService.this.getApplicationContext());
@ -1256,8 +1300,8 @@ public class MpMasterService extends Service {
return 0;
}
//重启运维应用
public static void restartMpMasterApp(Context context,String reason) {
//重启运维应用
public static void restartMpMasterApp(Context context, String reason) {
Intent intent = new Intent(context, MainActivity.class);
if (intent != null) {
if (!TextUtils.isEmpty(reason)) {
@ -1270,7 +1314,7 @@ public class MpMasterService extends Service {
System.exit(0);
}
//重启MpApp应用
//重启MpApp应用
public static void restartMpApp(Context context, String reason) {
SysApi.forceStopApp(context, MicroPhotoContext.PACKAGE_NAME_MPAPP);
@ -1295,8 +1339,8 @@ public class MpMasterService extends Service {
}
}
//根据包名重启应用
public static void restartAppByPackage(Context context,String packagename, String reason) {
//根据包名重启应用
public static void restartAppByPackage(Context context, String packagename, String reason) {
SysApi.forceStopApp(context, packagename);
try {
@ -1390,7 +1434,7 @@ public class MpMasterService extends Service {
}
}
copyAssetsDir(context, "mpapp/data", tmpDestPath.getAbsolutePath());
MpMasterService.restartMpApp(context.getApplicationContext(),"FIRST Config Init");
MpMasterService.restartMpApp(context.getApplicationContext(), "FIRST Config Init");
}
};

Loading…
Cancel
Save