由于项目需要,很多时候使用新进程来运行服务等类似的需要,一般常用android:process=":newProcess"的方法。但是在android每新启动一个进程都需要重新加载Application的onCreate方法。我们就需要在onCreate里区分进程的名称来进行有选择性的加载一些资源。但是使用普通的context.getApplicationInfo.processName的方法都只能得到包名,无法区分同个包的进程。这里介绍一种其他可用的方法。
public String getProcessName(Context context) { String process = null; if (context != null) { int pid = android.os.Process.myPid(); ActivityManager am = (ActivityManager) context .getSystemService(Context.ACTIVITY_SERVICE); List<ActivityManager.RunningAppProcessInfo> infoList = null; try { infoList = am.getRunningAppProcesses(); for (ActivityManager.RunningAppProcessInfo apps : infoList) { if (apps.pid == pid) { process = apps.processName; } } } catch (SecurityException e) { // 进程可能不具备获取 getRunningAppProcesses 权限 e.printStackTrace(); } } return process ;