初始化MpAPP和MpMaster

lowmem
Matthew 4 weeks ago
parent e5fd96efce
commit 0a88e9b918

@ -1,5 +1,6 @@
package com.xypower.mpres;
import android.app.ActivityManager;
import android.content.Context;
import android.content.Intent;
import android.content.res.AssetManager;
@ -24,6 +25,8 @@ import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.util.List;
import java.util.concurrent.ExecutionException;
public class MainActivity extends AppCompatActivity {
@ -38,23 +41,29 @@ public class MainActivity extends AppCompatActivity {
if (initres != 0) {
mHandler = new Handler();
final String sn = intent.getStringExtra("sn");
final Context context = getApplicationContext();
Runnable runnable = new Runnable() {
@Override
public void run() {
notifyMpApp();
try {
if (initMpMasterConfigurations(context)) {
restartMpMasterApp(context);
}
restartMpApp(getApplicationContext(), "FIRST Config Init");
sleep(100);
System.exit(0);
} catch (Exception ex) {
ex.printStackTrace();
}
}
};
initMpAppConfigurations(getApplicationContext(), mHandler, sn, runnable);
initMpAppConfigurations(context, mHandler, sn, runnable);
}
}
private void notifyMpApp() {
restartMpApp(getApplicationContext(), "FIRST Config Init");
sleep(100);
System.exit(0);
}
public static boolean initMpAppConfigurations(final Context context, final Handler handler, final String sn, final Runnable runnable) {
boolean existed = true;
@ -169,7 +178,7 @@ public class MainActivity extends AppCompatActivity {
}
}
copyAssetsDir(context, "mpmst", dataPath.getAbsolutePath());
copyAssetsDir(context, "mpmst/data", dataPath.getAbsolutePath());
return true;
}
@ -262,7 +271,8 @@ public class MainActivity extends AppCompatActivity {
public static void restartMpApp(Context context, String reason) {
SysApi.forceStopApp(context, MicroPhotoContext.PACKAGE_NAME_MPAPP);
// SysApi.forceStopApp(context, MicroPhotoContext.PACKAGE_NAME_MPAPP);
killAppProcess(context, MicroPhotoContext.PACKAGE_NAME_MPAPP);
sleep(100);
try {
@ -279,4 +289,65 @@ public class MainActivity extends AppCompatActivity {
e.printStackTrace();
}
}
public static void restartMpMasterApp(Context context) {
killAppProcess(context, MicroPhotoContext.PACKAGE_NAME_MPMASTER);
sleep(50);
try {
Intent intent = context.getPackageManager().getLaunchIntentForPackage(MicroPhotoContext.PACKAGE_NAME_MPMASTER);
if (intent != null) {
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
} catch (Exception e) {
e.printStackTrace();
}
}
private static boolean killAppProcess(final Context context, String packageName) {
boolean killed = false;
try {
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> processes = am.getRunningAppProcesses();
for (ActivityManager.RunningAppProcessInfo rapi : processes) {
if (rapi.pkgList == null || rapi.pkgList.length == 0) {
continue;
}
for (String pkg : rapi.pkgList) {
if (TextUtils.equals(pkg, packageName)) {
killed = true;
android.os.Process.killProcess(rapi.pid);
break;
}
}
if (killed) {
break;
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
return killed;
}
private boolean killAppByService(final Context context, String packageName, String serviceClassName) {
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()) && TextUtils.equals(serviceClassName, rsi.service.getClassName())) {
isRunning = true;
break;
}
}
return isRunning;
}
}
Loading…
Cancel
Save