最近接手的项目偶然间发现的一个bug:application的onCreate执行了两次。。。果断去清单文件里面看一下,果然
<!--百度定位-->
<service
android:name="com.baidu.location.f"
android:enabled="true"
android:process=":remote"/>
通过log,发现除了包名的进程外,还有一个包名:remote的进行,而多出来的执行数次,就是这个进程在执行的,那么问题就非常好解决了,判断一下进程,只执行正确包名的就妥了。
public static String getProcessName(Context context, int pid) {
ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> runningApps = manager.getRunningAppProcesses();
if (runningApps == null) {
return null;
}
for (ActivityManager.RunningAppProcessInfo procInfo : runningApps) {
if (procInfo.pid == pid) {
return procInfo.processName;
}
}
return null;
}
这是获取进程名的一个方法
然后在application的资源初始化之前,加入判断:
String processName = SinMinUtils.getProcessName(this, android.os.Process.myPid());
if (!getPackageName().equals(processName)) {
return;
}
解决。