Android的Application的oncreate()多次被调用原因并解决方案

原因

    通常情况下,一个apk应用我们都是默认开启一个进程,其进程名为AndroidMainfest.xml文件中指定的应用包名,所有的基本组件都是在这个进程中进行,application会被执行一次。但是如果我们工程涉及到多进程,那么就会出现application的oncreate多次被调用情况。

如何解决oncreate()多次被调用

添加获取当前进程名

/**获取进程名*/
    private String getProcessName(Context context) {
        try {
            ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
            List runningApps = am.getRunningAppProcesses();
            if (runningApps == null) {
                return null;
            }
            for (ActivityManager.RunningAppProcessInfo proInfo : runningApps) {
                if (proInfo.pid == android.os.Process.myPid()) {
                    if (proInfo.processName != null) {
                        return proInfo.processName;
                    }
                }
            }
        }catch (Exception e){
            e.printStackTrace();
        }
        return null;
    }

在onCreate函数中添加以下代码:

    @Override
    public void onCreate() {
        super.onCreate();
        String processName = getProcessName(this);
        if (processName!= null) {
            String pkName = this.getPackageName();
            //只有主进程,才执行后续逻辑
            if(processName.equals(pkName)==false) {
                return;
            }
        }
        //........

也可以根据不同进程进行不同的初始化,可以利用进程名根据具体需求,加载那些资源,执行具体逻辑。

你可能感兴趣的:(android入门)