日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

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

新聞中心

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

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

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

Step 2. Process.start

這個函數(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,它是一個Native函數(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的打開描述符,如果成功打開了這個設(shè)備文件,那么它的值就會大于等于0,因此,它的返回值為true。

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


名稱欄目:Android應用程序進程啟動過程的源代碼分析(二)
文章分享:http://www.5511xx.com/article/dphhhgh.html