publicclassMyAppextendsApplication{privatestaticfinalStringTAG="ProcessDemo";@OverridepublicvoidonCreate(){super.onCreate();StringprocessName=getProcessName(this);Log.d(TAG,"Application created in process: "+processName);// 不同进程初始化不同组件
if(processName.endsWith(":remote")){initRemoteProcess();}elseif(processName.equals(getPackageName())){initMainProcess();}}privateStringgetProcessName(Contextcontext){intpid=android.os.Process.myPid();ActivityManageram=(ActivityManager)context.getSystemService(ACTIVITY_SERVICE);for(ActivityManager.RunningAppProcessInfoprocess:am.getRunningAppProcesses()){if(process.pid==pid){returnprocess.processName;}}returnnull;}}
四、多进程带来的影响
1. 数据隔离问题
数据类型
多进程表现
静态变量
各进程独立副本
SharedPreferences
默认不支持跨进程,需MODE_MULTI_PROCESS
单例模式
每个进程有独立实例
文件锁
需要跨进程文件锁实现
2. 跨进程通信方案
graph TD
A[主进程] -->|Binder| B[子进程1]
A -->|Messenger| C[子进程2]
A -->|ContentProvider| D[子进程3]
A -->|Socket/文件| E[子进程4]