当多进程process运行时,会重新走一遍Application的onCreate()方法,此时要加上判断主进程,不然会重新初始化一遍
val processName = getProcessName(this, android.os.Process.myPid()); if (processName != null) { val defaultProcess = processName.equals(packageName);//修改为自己项目的包名 if (defaultProcess) { //兼容bug 不知道为啥 这里onCreate方法会执行两次 //processName:com.nufang.zao Log.e(TAG, ": loading====>>默认进程processName:" + processName) } else { //第二次是信鸽服务processName:com.nufang.zao:xg_vip_service Log.e(TAG, ": loading====>>又进来processName:" + processName) return } }}
fun getProcessName(cxt: Context, pid: Int): String? { val am = cxt.getSystemService(ACTIVITY_SERVICE) as ActivityManager val runningApps = am.runningAppProcesses ?: return null for (procInfo in runningApps) { if (procInfo.pid == pid) { return procInfo.processName } } return null }