问题:Android给Activity设置了其他进程,会导致Application会重复创建。
方案:在Application再次创建的时候对比一下进程名字,如果不是原始的名字不执行onCreate()里面的方法。
Application:
@Override
public void onCreate() {
super.onCreate();
super.onCreate();
//获取当前进程的进程名字
String processName = getProcessName(this, android.os.Process.myPid());
if (processName != null) {
boolean defaultProcess = processName.equals("com.xxx.xxx");
if (defaultProcess) { //如果名字是原始进程,执行初始化
initParams();
initPlugin();
}
}
}
//根据进程ID获取进程名字
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;
}