出现这个情况的原因,应该是在application进行初始化时候,使用的推送重新创建的新的进程,导致某些数据在新创建的进程无法获取,解决方案是,判断只有在主进程才能进行某些操作
private final static String PROCESS_NAME = "com.test";/*** 判断是不是UI主进程,因为有些东西只能在UI主进程初始化*/public static boolean isAppMainProcess() {try {int pid = android.os.Process.myPid();String process = getAppNameByPID(getContext(), pid);if (TextUtils.isEmpty(process)) {return true;} else if (PROCESS_NAME.equalsIgnoreCase(process)) {return true;} else {return false;}} catch (Exception e) {e.printStackTrace();return true;}}/*** 根据Pid得到进程名*/public static String getAppNameByPID(Context context, int pid) {ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);for (android.app.ActivityManager.RunningAppProcessInfo processInfo : manager.getRunningAppProcesses()) {if (processInfo.pid == pid) {return processInfo.processName;}}return "";}if(isAppMainProcess()){// TODO 只在主线程当中进行某些操作}