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 的 onCreate 中获取进程名称并进行相应的判断,例如:
//cn.appblog.demo
String processName = AppUtil.getProcessName(this, android.os.Process.myPid());
//判断进程名,保证只有主进程运行
if (!TextUtils.isEmpty(processName) && processName.equals(this.getPackageName())) {
//主进程初始化逻辑
}