一、开发背景
不知道大家有没有遇到过这样一种情况,在使用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()里面调用即可,获得相应的进程名字,然后做相应的处理。