日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Android應(yīng)用程序進(jìn)程啟動過程的源代碼分析(二)

上文我們調(diào)用了Process.start函數(shù)開始為應(yīng)用程序創(chuàng)建新的進(jìn)程。

注意,它傳入一個(gè)***個(gè)參數(shù)為"Android.app.ActivityThread",這就是進(jìn)程初始化時(shí)要加載的Java類了,把這個(gè)類加載到進(jìn)程之后,就會把它里面的靜態(tài)成員函數(shù)main作為進(jìn)程的入口點(diǎn),后面我們會看到。

Step 2. Process.start

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

 
 
  1. [java] view plaincopypublic class Process { 
  2.   ...... 
  3.   public static final int start(final String processClass, 
  4.   final String niceName, 
  5.   int uid, int gid, int[] gids, 
  6.   int debugFlags, 
  7.   String[] zygoteArgs) 
  8.   { 
  9.   if (supportsProcesses()) { 
  10.   try { 
  11.   return startViaZygote(processClass, niceName, uid, gid, gids, 
  12.   debugFlags, zygoteArgs); 
  13.   } catch (ZygoteStartFailedEx ex) { 
  14.   ...... 
  15.   } 
  16.   } else { 
  17.   ...... 
  18.   return 0; 
  19.   } 
  20.   } 
  21.   ...... 
  22.   } 

這里的supportsProcesses函數(shù)返回值為true,它是一個(gè)Native函數(shù),實(shí)現(xiàn)在frameworks/base/core/jni/android_util_Process.cpp文件中:

 
 
  1. [cpp] view plaincopyjboolean android_os_Process_supportsProcesses(JNIEnv* 
  2. env, jobject clazz) 
  3.   { 
  4.   return ProcessState::self()->supportsProcesses(); 
  5.   } 
  6.   ProcessState::supportsProcesses函數(shù)定義在frameworks/base/libs/binder/ProcessState.cpp文件中: 
  7.   [cpp] view plaincopybool ProcessState::supportsProcesses() const 
  8.   { 
  9.   return mDriverFD >= 0; 
  10.   } 

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

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


本文名稱:Android應(yīng)用程序進(jìn)程啟動過程的源代碼分析(二)
網(wǎng)站路徑:http://www.dlmjj.cn/article/dphhhgh.html