Android-守护进程导致Application多次初始化

因为要提升应用在手机上面的保活率,所以我在项目当中编写了守护进程。但是我们编写之后遇到了Application被多次初始化的情况,下面分享一下我的解决方案。

获取当前进程

怎么获取当前进程呢?直接给小伙伴们上代码吧!

    /**
     * 获取当前进程名称
     * @param context
     * @param pid
     * @return
     */
    public String getProcessName(Context context, int pid) {
        ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
        List runningApps = am.getRunningAppProcesses();
        if (runningApps == null) {
            return "";
        }
        for (ActivityManager.RunningAppProcessInfo procInfo : runningApps) {
            if (procInfo.pid == pid) {
                return procInfo.processName;
            }
        }
        return "";
    }

判断是否是自己当前进程

我们需要在ApplicationonCreate()里面判断是否是当前进程,下面是代码示例:

 @Override
    public void onCreate() {
        super.onCreate();
        String processName = getProcessName(this, android.os.Process.myPid());
        if (!TextUtils.isEmpty(processName)) {
            //判断进程名称是否与主程序applicationId相同
            boolean defaultProcess = processName.equals("com.xxx.xxx");
            //相同为主程序初始化
            if (defaultProcess) {
                //进行你的插件初始化
                instance = this;
                initParams();
                initPlugin();
            }
        }
    }

如果不是当前进程的情况,我们就不走初始化代码。希望我这边文章对同样是Android开发的小伙伴有帮助。

你可能感兴趣的:(Android-守护进程导致Application多次初始化)