Android多进程导致多次初始化Application

时间:2022-08-28 20:27:48

最近项目中遇到一个问题:APP运行2个进程,然后发现APP的Application的onCreate被调用了两次,导致Application初始化了两次,造成app启动的时候非常缓慢而且已启动占用的内存很大,因为两个进程都初始化了相同的资源,而且两个进程是相互独立的,所以各自初始化的资源都是独立的,也就是初始化了两份一样的资源;
原因:APP运行多进程导致Application被初始话多次
解决方案:获取当前进程的名称,然后根据进程名称匹配你要初始化的进程,再初始化相关进程的Applicaition

public static String getProcessName(Context cxt, int pid) {
ActivityManager am = (ActivityManager) cxt.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> runningApps = am.getRunningAppProcesses();
if (runningApps == null) {
return null;
}
for (ActivityManager.RunningAppProcessInfo procInfo : runningApps) {
if (procInfo.pid == pid) {
return procInfo.processName;
}
}
return null;
}

然后在Application里面添加:

// 多进程导致多次初始化Application,这里只初始化App主进程的Application
String curProcessName = getCurProcessName(this);
if (!curProcessName.equals(getPackageName())) {
return;
}