【Android】引入百度定位android:process=":remote",导致onCreate()方法重复执行问题处理
16lz
2021-01-23
出现的问题:
当项目中配置了 android:process=":remote" 这个属性之后,会新增一个私有进程(包名+":remote"),这个进程里的Application也会走生命周期,然后onCreate里面一些初始化功能就会重复执行。
处理:在Application的onCreate()方法里面,先判断进程名是否是主进程(主进程名:包名),如果是主进程才执行后面的方法,如果不是主进程(比如remote 私有进程)就直接return。
代码:
自定义的Application:
@Override public void onCreate() { //**********多进程执行处理(onCreate方法仅在主进程执行一次) String processName = getProcessName(this, android.os.Process.myPid()); if(!getPackageName().equals(processName)){//非主进程不执行onCreate里面操作 return; } Log.d(TAG, "MyApplication-onCreate"); super.onCreate(); //下面是业务初始化内容。。。 //do something...}//获取当前进程名public static String getProcessName(Context cxt, int pid) { ActivityManager am = (ActivityManager) cxt.getSystemService(Context.ACTIVITY_SERVICE); List runningApps = am.getRunningAppProcesses(); if (runningApps == null) { return null; } for (ActivityManager.RunningAppProcessInfo procInfo : runningApps) { if (procInfo.pid == pid) { return procInfo.processName; } } return null; }
更多相关文章
- WebView---Android中调用js方法及js中调用本地方法
- Linux下的Android电话管理软件――QtADB(安装启动方法)
- Android IPC(跨进程通信)之AIDL
- Android的进程回收
- Android adb功能使用方法
- Android 4.4 全套源码及子模块源码的下载方法
- android解析XML文件的三方法之SAX