app的初始化数据方法initApp()放在Application的onCreate方法执行,结果initApp方法被调用多次。原因在于Application有多个进程,每个进程都会执行onCreate,其中个推推送实例化也是一个进程。
解决方法:
String processName =getProcessName(this, android.os.Process.myPid()); SystemOutClass.syso("进程名称。。。。",processName); if(processName != null){ //判断当前的进程是我们自己app boolean defaultProcess = processName.equals("com.kankan.see");//com.kankan.see自己的包名 if(defaultProcess){ //当前应用的初始化 initApp(); } }
public 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; }
问题得以解决。