<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>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # Zygote Service 在本章我們會接觸到這兩個單詞: - Zygote?[生物]?受精卵,?接合子,?接合體 - Spawn:產卵 通過這兩個單詞,我們就可以大體知道Zygote是干什么的了,就是叫老母雞下蛋。通過“Zygote”產出不同的子“Zygote”。從大的架構上講,Zygote是一個簡單的典型C/S結構。其他進程作為一個客服端向Zygote發出”孵化”請求,Zygote接收到命令就“孵化”出一個Activity進程來。 ![](https://box.kancloud.cn/2016-05-05_572b1a193cd13.gif) Zygote系統代碼組成及其調用結構: - Zygote.java 提供訪問Dalvik?“zygote”的接口。主要是包裝Linux系統的Fork,以建立一個新的VM實例進程。 - ZygoteConnection.java Zygote的套接口連接管理及其參數解析。其他Actvitiy建立進程請求是通過套接口發送命令參數給Zygote。 - ZygoteInit.java Zygote的main函數入口。 Zygote系統代碼層次調用 ~~~ main() startSystemServer()… runSelectLoopMode() Accept?socket?connection Conntecion.RunOnce() Read?argument folkAndSpecialize folkAndSpecialize使用Native函數Dalvik_dalvik_system_Zygote_forkAndSpecialize //native?的獲取 dalvik/vm/native //dalvik_system_Zygote.c ?const?DalvikNativeMethod?dvm_dalvik_system_Zygote[]?=?{ ???{?"fork",????????????"()I", ???????Dalvik_dalvik_system_Zygote_fork?}, ???{?"forkAndSpecialize",????????????"(II[II[[I)I", ???????Dalvik_dalvik_system_Zygote_forkAndSpecialize?}, ???{?"forkSystemServer",????????????"(II[II[[I)I", ???????Dalvik_dalvik_system_Zygote_forkSystemServer?}, ???{?NULL,?NULL,?NULL?}, }; ~~~ 在這里我們就有了Zygote服務的全貌理解,也在Code中印證了。【應[yk_hu0621](http://hi.csdn.net/yk_hu0621)修正】{由于Android中沒有具體應用程序的入口,都是通過啟動Actvity來啟動相關的Android應用,而這個?Android應用則對應著Linux進程,Activity便Host在這個應用程序上。} {原文:Activity在本質上是個什么東西,就是一個Linux進程} 從分析中我們可以看到,Android使用了Linux的fork機制。在Linux中Fork是很高效的。 一個Android的應用實際上一個Linux進程,所謂進程具備下面幾個要素, a.要有一段程序供該進程運行,程序是可以被多個進程共享的。 b..進程專用的系統堆棧空間。 c.進程控制塊,在linux中具體實現是task_struct d.有獨立的存儲空間。 fork?創造的子進程復制了父親進程的資源,包括內存的內容task_struct內容,在復制過程中,子進程復制了父進程的task_struct,系統堆棧空間和頁面表,而當子進程改變了父進程的變量時候,會通過copy_on_write的手段為所涉及的頁面建立一個新的副本。所以只有子進程有改變變量時,子進程才新建了一個頁面復制原來頁面的內容,基本資源的復制是必須的,整體看上去就像是父進程的獨立存儲空間也復制了一遍。 再看看下面Google在講解Dalvik虛擬機的圖片,我們就大體有了Android系統中Actvitiy的實際映射狀態有了基本的認識。 ![](https://box.kancloud.cn/2016-05-05_572b1a1951eae.gif)
                  <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>

                              哎呀哎呀视频在线观看