每新建一個進程,Application的onCreate都將被調用一次。 這顛覆了很多人對Application的onCreate的理解。一般人都認爲只會走一次。
所以在Application的onCreate中有初始化工作且需要根據進程來區分的。
解決方法:
在Application的onCreate中獲取進程名稱並進行相應的判斷,例如:
private static String getProcessName(Context context) {
try { int pid = android.os.Process.myPid(); ActivityManager mActivityManager = (ActivityManager) context .getSystemService(Context.ACTIVITY_SERVICE); for (ActivityManager.RunningAppProcessInfo appProcess : mActivityManager .getRunningAppProcesses()) { if (appProcess.pid == pid) { return appProcess.processName; } } } catch (Throwable e) { } return ""; }
String processName = getProcessName(this, android.os.Process.myPid()); if (!TextUtils.isEmpty(processName) && processName.equals(this.getPackageName())) {//判斷進程名,保證只有主進程運行 //主進程邏輯 } else { //具體根據需要來處理。 return; }