Android启动apk时主activity多次调用

来源:互联网 发布:微信h5支付 java 编辑:程序博客网 时间:2024/05/19 23:00

新上线的项目部分手机出现了同时初始化多次平台sdk的情况,这个sdk是写在主activity的 onCreate方法里面,这就意味着apk启动时主activity创建了多次。

网上搜索一番,给出的原因是手机打开应用时创建了多个进程(除了apk的主进程之外,还有一个后台service进程)


解决办法:

 在oncreate里面做初始化的时候先判断一下进程是不是apk的主进程


    //是否为主process
    private boolean isMainProcess() {
        ActivityManager am = ((ActivityManager) getSystemService(Context.ACTIVITY_SERVICE));
        List<ActivityManager.RunningAppProcessInfo> processInfos = am.getRunningAppProcesses();
        String mainProcessName = getPackageName();
        int myPid = android.os.Process.myPid();


        for (ActivityManager.RunningAppProcessInfo info : processInfos) {
            if (info.pid == myPid && mainProcessName.equals(info.processName)) {
                return true;
            }
        }
        return false;
    }