首先application中的oncreate方法是可以执行多次的,每新开一个进程(不是线程),就会重新执行一遍oncreate方法。
直接上解决方案,有时间的自己去查原理...
@Override
public void onCreate() {
super.onCreate();
//多线程防止多次初始化
if (!getProcessName().equals(BuildConfig.APPLICATION_ID)) {
return;
}
//写其他逻辑...
}
private String getProcessName() {
ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
if (am == null) {
return "";
}
List<ActivityManager.RunningAppProcessInfo> runningApps = am.getRunningAppProcesses();
if (runningApps == null) {
return "";
}
for (ActivityManager.RunningAppProcessInfo proInfo : runningApps) {
if (proInfo.pid == android.os.Process.myPid()) {
if (proInfo.processName != null) {
return proInfo.processName;
}
}
}
return "";
}
网友评论