前几天碰到一个问题,application多次启动,开始并不清楚是什么原因,后来看到在我们自己的插件里也有一个进程启动了这个application
所以我的application多次启动是因为多进程
那我们如何来避免这个问题呢
判断是否当前程序主进程
private boolean isMain() {
int pid = android.os.Process.myPid();
String processName = "";
ActivityManager mActivityManager = (ActivityManager) this.getSystemService(Context.ACTIVITY_SERVICE);
for (ActivityManager.RunningAppProcessInfo appProcess : mActivityManager.getRunningAppProcesses()) {
if (appProcess.pid == pid) {
processName = appProcess.processName;
break;
}
}
String packageName = this.getPackageName();
if (processName.equals(packageName)) {
return true;
}
return false;
}
因为我在application中做了启动服务的操作 如果applicaiton多次启动 那服务就启动两次为了避免重复启动所以在这里我的用法是判断是否主进程再进行启动服务
if (isMain()) {
startService(new Intent(this, GameBoostService.class));
}