成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Android應用程序進程啟動過程的源代碼分析(三)

移動開發(fā) Android
mDriverFD是設備文件/dev/binder的打開描述符,如果成功打開了這個設備文件,那么它的值就會大于等于0,因此,它的返回值為true。

上文的mDriverFD是設備文件/dev/binder的打開描述符,如果成功打開了這個設備文件,那么它的值就會大于等于0,因此,它的返回值為true。

回到Process.start函數(shù)中,它調(diào)用startViaZygote函數(shù)進一步操作。

Step 3. Process.startViaZygote

這個函數(shù)定義在frameworks/base/core/java/android/os/Process.java文件中:

  1. [java] view plaincopypublic class Process { 
  2.   ...... 
  3.   private static int startViaZygote(final String processClass, 
  4.   final String niceName, 
  5.   final int uid, final int gid, 
  6.   final int[] gids, 
  7.   int debugFlags, 
  8.   String[] extraArgs) 
  9.   throws ZygoteStartFailedEx { 
  10.   int pid; 
  11.   synchronized(Process.class) { 
  12.   ArrayList argsForZygote = new ArrayList(); 
  13.   // --runtime-init, --setuid=, --setgid=, 
  14.   // and --setgroups= must go first 
  15.   argsForZygote.add("--runtime-init"); 
  16.   argsForZygote.add("--setuid=" + uid); 
  17.   argsForZygote.add("--setgid=" + gid); 
  18.   if ((debugFlags & Zygote.DEBUG_ENABLE_SAFEMODE) != 0) { 
  19.   argsForZygote.add("--enable-safemode"); 
  20.   } 
  21.   if ((debugFlags & Zygote.DEBUG_ENABLE_DEBUGGER) != 0) { 
  22.   argsForZygote.add("--enable-debugger"); 
  23.   } 
  24.   if ((debugFlags & Zygote.DEBUG_ENABLE_CHECKJNI) != 0) { 
  25.   argsForZygote.add("--enable-checkjni"); 
  26.   } 
  27.   if ((debugFlags & Zygote.DEBUG_ENABLE_ASSERT) != 0) { 
  28.   argsForZygote.add("--enable-assert"); 
  29.   } 
  30.   //TODO optionally enable debuger 
  31.   //argsForZygote.add("--enable-debugger"); 
  32.   // --setgroups is a comma-separated list 
  33.   if (gids != null && gids.length > 0) { 
  34.   StringBuilder sb = new StringBuilder(); 
  35.   sb.append("--setgroups="); 
  36.   int sz = gids.length; 
  37.   for (int i = 0; i < sz; i++) { 
  38.   if (i != 0) { 
  39.   sb.append(','); 
  40.   } 
  41.   sb.append(gids[i]); 
  42.   } 
  43.   argsForZygote.add(sb.toString()); 
  44.   } 
  45.   if (niceName != null) { 
  46.   argsForZygote.add("--nice-name=" + niceName); 
  47.   } 
  48.   argsForZygote.add(processClass); 
  49.   if (extraArgs != null) { 
  50.   for (String arg : extraArgs) { 
  51.   argsForZygote.add(arg); 
  52.   } 
  53.   } 
  54.   pid = zygoteSendArgsAndGetPid(argsForZygote); 
  55.   } 
  56.   } 
  57.   ...... 
  58.   } 

這個函數(shù)將創(chuàng)建進程的參數(shù)放到argsForZygote列表中去,如參數(shù)"--runtime-init"表示要為新創(chuàng)建的進程初始化運行時庫,然后調(diào)用zygoteSendAndGetPid函數(shù)進一步操作。

責任編輯:閆佳明 來源: bbs.9ria
相關推薦

2014-06-19 14:25:04

Android應用程序進程啟動

2014-06-20 11:05:56

Android應用程序進程啟動

2014-06-20 11:09:35

Android應用程序進程啟動

2014-06-20 11:24:34

Android應用程序進程啟動

2014-06-19 14:30:28

Android應用程序進程啟動

2014-06-19 14:59:40

Android應用程序進程啟動

2014-06-20 11:20:37

Android應用程序進程啟動

2012-02-20 14:47:08

JavaPlay

2014-05-22 15:00:16

Android消息處理機制Looper

2011-08-17 16:16:29

iPhone應用程序啟動過程

2011-07-28 10:34:38

Cocoa 程序 啟動

2011-06-28 13:27:13

ARM Linux

2014-06-23 10:31:09

Android啟動過程

2014-07-31 10:06:01

谷歌Google應用

2024-09-11 09:25:03

Tomcat組件PREP

2022-08-29 17:34:05

鴻蒙操作系統(tǒng)

2018-03-13 13:00:03

Linux運維啟動分析

2012-08-16 09:07:57

Erlang

2009-08-14 17:57:43

ASP.NET MVC

2010-12-13 11:40:17

Android應用程序
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 免费在线观看一区二区 | 欧美激情久久久 | 超碰一区二区 | 嫩草视频网站 | 国产精品一区在线播放 | 欧美日韩亚洲一区二区 | 日韩视频一区二区 | 欧美日本在线 | 婷婷福利视频导航 | 国产精品久久久久久久久久尿 | 午夜精品久久久久久久久久久久久 | 欧美不卡一区二区三区 | 亚洲激情在线观看 | av在线一区二区 | 中文一区 | 国产精久久久久久久妇剪断 | 欧美高清性xxxxhd | 九九综合九九 | 成人免费视频观看视频 | 国产成人综合在线 | 特级a欧美做爰片毛片 | 久久久久久国产精品免费免费狐狸 | 色综合久久天天综合网 | 亚洲视频第一页 | 黄色a三级 | 免费黄色录像视频 | 97精品国产 | 国产精品亚洲二区 | 亚洲视频一区二区三区 | 日本精品在线观看 | 欧美日韩高清一区二区三区 | 日韩区| 亚洲综合无码一区二区 | 精品国产欧美日韩不卡在线观看 | 91香蕉视频在线观看 | 91精品国产综合久久久久久首页 | 99国产精品久久久 | 亚洲国产精品一区二区久久 | 午夜激情在线 | 国产精品99久久久久久久vr | 91.色|