android:process的最大的坑

http://androidren.com/index.php?qa=361&qa_1=android-process%E7%9A%84%E6%9C%80%E5%A4%A7%E7%9A%84%E5%9D%91

每新建一個進程,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;
    }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章