Android多進程導致多次初始化Application

最近項目中遇到一個問題: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;
        }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章