上文的mDriverFD是设备文件/dev/binder的打开描述符,如果成功打开了这个设备文件,那么它的值就会大于等于0,因此,它的返回值为true。

公司主营业务:网站制作、成都网站建设、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。成都创新互联公司是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。成都创新互联公司推出崂山免费做网站回馈大家。
回到Process.start函数中,它调用startViaZygote函数进一步操作。
Step 3. Process.startViaZygote
这个函数定义在frameworks/base/core/java/Android/os/Process.java文件中:
- [java] view plaincopypublic class Process {
 - ......
 - private static int startViaZygote(final String processClass,
 - final String niceName,
 - final int uid, final int gid,
 - final int[] gids,
 - int debugFlags,
 - String[] extraArgs)
 - throws ZygoteStartFailedEx {
 - int pid;
 - synchronized(Process.class) {
 - ArrayList argsForZygote = new ArrayList();
 - // --runtime-init, --setuid=, --setgid=,
 - // and --setgroups= must go first
 - argsForZygote.add("--runtime-init");
 - argsForZygote.add("--setuid=" + uid);
 - argsForZygote.add("--setgid=" + gid);
 - if ((debugFlags & Zygote.DEBUG_ENABLE_SAFEMODE) != 0) {
 - argsForZygote.add("--enable-safemode");
 - }
 - if ((debugFlags & Zygote.DEBUG_ENABLE_DEBUGGER) != 0) {
 - argsForZygote.add("--enable-debugger");
 - }
 - if ((debugFlags & Zygote.DEBUG_ENABLE_CHECKJNI) != 0) {
 - argsForZygote.add("--enable-checkjni");
 - }
 - if ((debugFlags & Zygote.DEBUG_ENABLE_ASSERT) != 0) {
 - argsForZygote.add("--enable-assert");
 - }
 - //TODO optionally enable debuger
 - //argsForZygote.add("--enable-debugger");
 - // --setgroups is a comma-separated list
 - if (gids != null && gids.length > 0) {
 - StringBuilder sb = new StringBuilder();
 - sb.append("--setgroups=");
 - int sz = gids.length;
 - for (int i = 0; i < sz; i++) {
 - if (i != 0) {
 - sb.append(',');
 - }
 - sb.append(gids[i]);
 - }
 - argsForZygote.add(sb.toString());
 - }
 - if (niceName != null) {
 - argsForZygote.add("--nice-name=" + niceName);
 - }
 - argsForZygote.add(processClass);
 - if (extraArgs != null) {
 - for (String arg : extraArgs) {
 - argsForZygote.add(arg);
 - }
 - }
 - pid = zygoteSendArgsAndGetPid(argsForZygote);
 - }
 - }
 - ......
 - }
 
这个函数将创建进程的参数放到argsForZygote列表中去,如参数"--runtime-init"表示要为新创建的进程初始化运行时库,然后调用zygoteSendAndGetPid函数进一步操作。
                文章名称:Android应用程序进程启动过程的源代码分析(三)
                
                本文路径:http://www.csdahua.cn/qtweb/news36/269486.html
            
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网