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

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

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

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

回到Process.start函數中,它調用startViaZygote函數進一步操作。

Step 3. Process.startViaZygote

這個函數定義在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.   } 

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

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

2014-06-19 14:30:28

Android應用程序進程啟動

2014-06-19 14:59:40

Android應用程序進程啟動

2014-06-20 11:20:37

Android應用程序進程啟動

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應用程序進程啟動

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 程序 啟動

2014-06-23 10:31:09

Android啟動過程

2011-06-28 13:27:13

ARM Linux

2014-07-31 10:06:01

谷歌Google應用

2012-08-16 09:07:57

Erlang

2018-03-13 13:00:03

Linux運維啟動分析

2022-08-29 17:34:05

鴻蒙操作系統

2024-09-11 09:25:03

Tomcat組件PREP

2009-08-14 17:57:43

ASP.NET MVC

2014-05-22 15:45:58

Android消息處理機制Looper
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 在线视频国产一区 | 亚洲日本激情 | 欧美午夜在线 | 欧美成年黄网站色视频 | 成人aaa视频 | 色免费在线视频 | 欧美不卡| 免费的av网站 | 日本亚洲一区 | 久久久精| 91在线视频一区 | 欧美一区二区 | 黄色大片网站 | 欧美精品一区在线 | 亚洲精品视频免费 | 久久久国产亚洲精品 | 亚洲欧美综合精品久久成人 | 久草热线| 中文一区 | 天堂色| 国产在线二区 | 久久久青草婷婷精品综合日韩 | 成人免费观看男女羞羞视频 | 伊人二区 | 日韩成人免费视频 | www.久久 | 婷婷久久综合 | 久久久综合久久 | www.国产日本 | 韩日视频在线观看 | 久久久天堂 | 天天操夜夜拍 | 日韩一区二区在线免费观看 | www.亚洲.com | 人人亚洲 | 国产成人一区二区 | 日韩不卡一区二区三区 | 一区二区三区国产精品 | 日韩欧美国产精品 | 欧美成人一区二免费视频软件 | 精品国产乱码久久久久久中文 |