Android中全局Application的onCreate屡次调用问题

 通常来讲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;

  }

}

相关文章
相关标签/搜索