通常来讲Application的onCreate方法只会执行一次,android
若是应用中采用多进程方式,oncreate方法会执行屡次,根据不一样的进程名字进行不一样的初始化:web
String processName = getProcessName(this, android.os.Process.myPid()); if (processName != null) { boolean defaultProcess = processName.equals(Constants.REAL_PACKAGE_NAME); if (defaultProcess) { initAppForMainProcess(); } else if (processName.contains(":webbrowser")) { } else if (processName.contains(":wallet")) { } }
/** * @return null may be returned if the specified process not found */ public static String getProcessName(Context cxt, int pid) { ActivityManager am = (ActivityManager) cxt.getSystemService(Context.ACTIVITY_SERVICE); List<RunningAppProcessInfo> runningApps = am.getRunningAppProcesses(); if (runningApps == null) { return null; } for (RunningAppProcessInfo procInfo : runningApps) { if (procInfo.pid == pid) { return procInfo.processName; } } return null; }
新增一种获取运行进程名称的方案:this
public static String getProcessName() {spa
try {code
File file = new File("/proc/" + android.os.Process.myPid() + "/" + "cmdline");进程
BufferedReader mBufferedReader = new BufferedReader(new FileReader(file));ci
String processName = mBufferedReader.readLine().trim();get
mBufferedReader.close();cmd
return processName;it
} catch (Exception e) {
e.printStackTrace();
return null;
}
}