您的位置:首页 > 移动开发

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

2016-03-24 16:33 239 查看
最近项目中遇到一个问题: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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: