application初始化多次的解决方案

2018-09-12  本文已影响0人  hewenle

首先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 "";
}
上一篇下一篇

猜你喜欢

热点阅读