优化保活代码

serial
Matthew 1 year ago
parent a7679d6a81
commit 357f4bc8ce

@ -1,5 +1,6 @@
package com.xypower.common; package com.xypower.common;
import android.app.ActivityManager;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
@ -17,6 +18,7 @@ import java.io.IOException;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.io.OutputStreamWriter; import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.util.List;
public class MicroPhotoContext { public class MicroPhotoContext {
@ -92,6 +94,21 @@ public class MicroPhotoContext {
return stringBuilder == null ? null : stringBuilder.toString(); return stringBuilder == null ? null : stringBuilder.toString();
} }
public static boolean isAppAlive(Context context, String packageName) {
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningServiceInfo> services = am.getRunningServices(Integer.MAX_VALUE);
boolean isRunning = false;
for (ActivityManager.RunningServiceInfo rsi : services) {
if (packageName.equalsIgnoreCase(rsi.service.getPackageName())) {
isRunning = true;
break;
}
}
return isRunning;
}
public static String buildAppDir(Context contxt) { public static String buildAppDir(Context contxt) {
String path = Environment.getExternalStorageDirectory().getAbsolutePath(); String path = Environment.getExternalStorageDirectory().getAbsolutePath();

@ -4,6 +4,7 @@ import android.content.Context;
import android.os.Environment; import android.os.Environment;
import android.os.PowerManager; import android.os.PowerManager;
import android.os.SystemClock; import android.os.SystemClock;
import android.os.storage.StorageManager;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import android.util.Pair; import android.util.Pair;
@ -102,13 +103,7 @@ public class AppMaster {
public void run() { public void run() {
// mMasterUrl = "http://192.168.50.100/mntn/"; // mMasterUrl = "http://192.168.50.100/mntn/";
final Context context = mService.getApplicationContext();
String appPath = MicroPhotoContext.buildAppDir(context);
File mpappDb = new File(appPath + "data/App.db");
if (!mpappDb.exists() || ((System.currentTimeMillis() - mpappDb.lastModified()) > 1800000)) {
// greater than 30m
MicroPhotoContext.restartMpApp(context);
}
String masterUrl = mMasterUrl; String masterUrl = mMasterUrl;
@ -571,4 +566,5 @@ public class AppMaster {
} }
} }

@ -121,6 +121,9 @@ public class MpMasterService extends Service {
private String mSerialNo = null; private String mSerialNo = null;
private long mTimeToStartMpApp = 0;
private long mTimeOfMpAppAlive = 1800000; // 30minutes
public MpMasterService() { public MpMasterService() {
} }
@Override @Override
@ -184,6 +187,7 @@ public class MpMasterService extends Service {
// AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); // AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
startMaster(); startMaster();
startMpApp();
registerHeartbeatTimer(); registerHeartbeatTimer();
@ -221,6 +225,36 @@ public class MpMasterService extends Service {
return mCmdid; return mCmdid;
} }
public void startMpApp() {
try {
final Context context = getApplicationContext();
if (MicroPhotoContext.isAppAlive(context, MicroPhotoContext.PACKAGE_NAME_MPAPP)) {
return;
}
String appPath = MicroPhotoContext.buildMpAppDir(context);
long ts = System.currentTimeMillis();
if (ts - mTimeToStartMpApp < 30000) {
return;
}
File mpappDb = new File(appPath + "data/App.db");
long modifiedTimeOfDb = 0;
if (mpappDb.exists()) {
modifiedTimeOfDb = mpappDb.lastModified();
}
if ((ts - modifiedTimeOfDb) > mTimeOfMpAppAlive) {
// greater than 30m
MicroPhotoContext.restartMpApp(context);
mTimeToStartMpApp = ts;
}
} catch (Exception ex) {
}
}
public String getMpAppVersion() { public String getMpAppVersion() {
if (TextUtils.isEmpty(mMpAppVersion)) { if (TextUtils.isEmpty(mMpAppVersion)) {
PackageManager packageManager = getPackageManager(); PackageManager packageManager = getPackageManager();
@ -306,6 +340,7 @@ public class MpMasterService extends Service {
mService.registerHeartbeatTimer(); mService.registerHeartbeatTimer();
mService.startMaster(); mService.startMaster();
mService.startMpApp();
} else if (TextUtils.equals(ACTION_MSG_BROADCAST, action)) { } else if (TextUtils.equals(ACTION_MSG_BROADCAST, action)) {
@ -693,5 +728,9 @@ public class MpMasterService extends Service {
SysApi.selectSimCard4Data(getApplicationContext(), num); SysApi.selectSimCard4Data(getApplicationContext(), num);
} }
////////////////////////GPS//////////////////// ////////////////////////GPS////////////////////
} }
Loading…
Cancel
Save