我们都知道在xml中给某个组件添加android:process可以为此组件创建新的运行进程;
ContentProvider的创建会早于Application的onCreate,这点区别于其他三大组件;
今天针对ContentProvider开启android:process做了一些验证,相信对于同等地位的四大组件可以通用:
1、新创建的进程包名依旧是主进程的包名,不会随着android:process所定义的值发生改变,
2、同时新的进程也不会在data/data/下创建新的文件目录,而是共享了主进程的文件目录;
3、通过getContext().getApplicationInfo().processName获取到的依然是同主进程的包名,而如果想要获取android:process的值,则需要通过以下代码获取:
String getCurProcessName(Context context) {
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;
}
}
return null;
}