一、开发背景

        不知道大家有没有遇到过这样一种情况,在使用app extend application 的app基类中的onCreate()方法中,由于多次启动不同的进程,导致onCreate()方法多次调用。而打印Log日志的时候只打印一次。出现这种情况,我使用文件存储记录,发现还真是被多次调用了。后来跟同事讨论,发现原来是因为多个进程启动了,才导致多次被调用。知道问题所在,后面的事情就好处理了。是的,我们需要获取到不同的进程,然后根据进程的名字进行事件判定监听,防止多次执行onCreate()。

二、工具类code

/**
 * Created by Administrator on 2017/2/14.
 * 获得进程名字的方法
 */

public class OsUtil {

    public static String getProcessName(Context cxt, int pid) {
        //获取ActivityManager对象
        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;
    }
}

调用很简单,直接在onCreate()里面调用即可,获得相应的进程名字,然后做相应的处理。