<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                前面有一節,題目叫“有求必應之等待請求”,那么這一節“有求必應之響應請求”會回到ZygoteInit。下面就看看它是如何處理請求的。 **ZygoteInit.java** ~~~ private static void runSelectLoopMode() throwsMethodAndArgsCaller{ ...... try { fdArray = fds.toArray(fdArray); ...... else if (index == 0) { ZygoteConnection newPeer = acceptCommandPeer(); peers.add(newPeer); fds.add(newPeer.getFileDesciptor()); } else { boolean done; //調用ZygoteConnection的runOnce done = peers.get(index).runOnce(); } ...... } ~~~ 每當有請求數據發來時,Zygote都會調用ZygoteConnection的runOnce函數。ZygoteConnection代碼在ZygoteConnection.java文件中,來看看它的runOnce函數: **ZygoteConnection.java** ~~~ boolean runOnce() throwsZygoteInit.MethodAndArgsCaller { try { args = readArgumentList();//讀取SS發送過來的參數 descriptors = mSocket.getAncillaryFileDescriptors(); } ...... int pid; try { parsedArgs = new Arguments(args); applyUidSecurityPolicy(parsedArgs, peer); //根據函數名,可知Zygote又分裂出了一個子進程。 pid =Zygote.forkAndSpecialize(parsedArgs.uid, parsedArgs.gid, parsedArgs.gids,parsedArgs.debugFlags, rlimits); } ...... if(pid == 0) { //子進程處理,這個子進程是不是我們要創建的Activity對應的子進程呢? handleChildProc(parsedArgs, descriptors, newStderr); return true; }else { //zygote進程 return handleParentProc(pid, descriptors, parsedArgs); } } ~~~ 接下來,看看新創建的子進程在handleChildProc中做了些什么。 **ZygoteConnection.java** ~~~ private void handleChildProc(ArgumentsparsedArgs,FileDescriptor[] descriptors, PrintStream newStderr) throwsZygoteInit.MethodAndArgsCaller { ......//根據傳入的參數設置新進程的一些屬性 //SS發來的參數中有“--runtime-init“,所以parsedArgs.runtimeInit為true。 if(parsedArgs.runtimeInit) { RuntimeInit.zygoteInit(parsedArgs.remainingArgs); }else { ...... } } ~~~ **RuntimeInit.java** ~~~ public static final void zygoteInit(String[]argv) throws ZygoteInit.MethodAndArgsCaller { //重定向標準輸出和錯誤輸出 System.setOut(new AndroidPrintStream(Log.INFO, "System.out")); System.setErr(new AndroidPrintStream(Log.WARN, "System.err")); commonInit(); //下面這個函數為native函數,最終會調用AppRuntime的onZygoteInit,在那個函數中 //建立了和Binder的關系 zygoteInitNative(); int curArg = 0; ...... String startClass = argv[curArg++]; String[] startArgs = new String[argv.length - curArg]; System.arraycopy(argv, curArg, startArgs, 0, startArgs.length); //最終還是調用invokeStaticMain函數,這個函數我們已經見識過了。 invokeStaticMain(startClass, startArgs); } ~~~ Zygote分裂子進程后,自己將在handleParentProc中做一些掃尾工作,然后繼續等待請求進行下一次分裂。 >[info]**提示**:這個android.app.ActivityThread類,實際上是Android中apk程序所對應的進程,它的main函數就是apk程序的main函數。從這個類的命名(android.app)中也可以看出些端倪。 通過這一節的分析,讀者可以想到,Android系統運行的那些apk程序,其父都是zygote。這一點,可以通過adb shell登錄后,用ps命令查看進程和父進程號來確認。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看