自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Android應(yīng)用程序進(jìn)程啟動(dòng)過(guò)程的源代碼分析(三)

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

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

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

Step 3. Process.startViaZygote

這個(gè)函數(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.   } 

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

責(zé)任編輯:閆佳明 來(lái)源: bbs.9ria
相關(guān)推薦

2014-06-20 11:05:56

Android應(yīng)用程序進(jìn)程啟動(dòng)

2014-06-20 11:09:35

Android應(yīng)用程序進(jìn)程啟動(dòng)

2014-06-19 14:25:04

Android應(yīng)用程序進(jìn)程啟動(dòng)

2014-06-20 11:24:34

Android應(yīng)用程序進(jìn)程啟動(dòng)

2014-06-20 11:20:37

Android應(yīng)用程序進(jìn)程啟動(dòng)

2014-06-19 14:30:28

Android應(yīng)用程序進(jìn)程啟動(dòng)

2014-06-19 14:59:40

Android應(yīng)用程序進(jìn)程啟動(dòng)

2012-02-20 14:47:08

JavaPlay

2014-05-22 15:00:16

Android消息處理機(jī)制Looper

2011-08-17 16:16:29

iPhone應(yīng)用程序啟動(dòng)過(guò)程

2011-07-28 10:34:38

Cocoa 程序 啟動(dòng)

2011-06-28 13:27:13

ARM Linux

2014-06-23 10:31:09

Android啟動(dòng)過(guò)程

2024-09-11 09:25:03

Tomcat組件PREP

2014-07-31 10:06:01

谷歌Google應(yīng)用

2012-08-16 09:07:57

Erlang

2018-03-13 13:00:03

Linux運(yùn)維啟動(dòng)分析

2022-08-29 17:34:05

鴻蒙操作系統(tǒng)

2009-08-14 17:57:43

ASP.NET MVC

2010-12-13 11:40:17

Android應(yīng)用程序
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)