android:process的最大的坑
16lz
2021-01-26
http://androidren.com/index.php?qa=361&qa_1=android-process%E7%9A%84%E6%9C%80%E5%A4%A7%E7%9A%84%E5%9D%91
每新建一个进程,Application的onCreate都将被调用一次。 这颠覆了很多人对Application的onCreate的理解。一般人都认为只会走一次。
所以在Application的onCreate中有初始化工作且需要根据进程来区分的。
解决方法:
在Application的onCreate中获取进程名称并进行相应的判断,例如:
private static String getProcessName(Context context) {
try { int pid = android.os.Process.myPid(); ActivityManager mActivityManager = (ActivityManager) context .getSystemService(Context.ACTIVITY_SERVICE); for (ActivityManager.RunningAppProcessInfo appProcess : mActivityManager .getRunningAppProcesses()) { if (appProcess.pid == pid) { return appProcess.processName; } } } catch (Throwable e) { } return "";}
String processName = getProcessName(this, android.os.Process.myPid()); if (!TextUtils.isEmpty(processName) && processName.equals(this.getPackageName())) {//判断进程名,保证只有主进程运行//主进程逻辑 } else {//具体根据需要来处理。 return; }
更多相关文章
- Android(安卓)SystemUI 闪烁
- Android(安卓)获取判断是否有悬浮窗权限的方法
- Android杂谈:cup信息查看
- Android(安卓)System Property
- 【Android】一键清理后台实现【附源码】
- Android(安卓)- 判断当前网络环境、隐藏软键盘、动态监测及获取
- 【白话】App从启动到页面显示出来发生了什么
- android 重要组件之一activity,及进程间的通信
- Android(安卓)Binder 驱动 - 内核驱动层源码分析