本文共 906 字,大约阅读时间需要 3 分钟。
集成某 SDK 后 APP 多了一个进程,打 log 的时候偶然发现Application 初始化了两次,虽然对 APP 本身没什么影响,但多初始化一次也没什么用 - -
解决方法就是判断当前进程是否是 APP 默认进程,是才进行初始化操作, APP 默认进程名就是包名。
@Override public void onCreate() { super.onCreate(); String curProcess = OsUtils.getProcessName(this, Process.myPid()); if (!getPackageName().equals(curProcess)) { return; } ... // 初始化操作 } ...}
获取进程名的方法:
public static String getProcessName(Context cxt, int pid) { ActivityManager am = (ActivityManager) cxt.getSystemService(Context.ACTIVITY_SERVICE); ListrunningApps = am.getRunningAppProcesses(); if (runningApps != null && !runningApps.isEmpty()) { for (ActivityManager.RunningAppProcessInfo procInfo : runningApps) { if (procInfo.pid == pid) { return procInfo.processName; } } } return null; }
转载地址:http://txsyb.baihongyu.com/