摘要:
此前的文章我們學習了init進程、Zygote進程和SyetemServer進程的啟動過程,這一篇文章我們就來學習Android系統啟動流程的最后一步:Launcher的啟動流程,并結合本系列的前三篇文章的內容來講解Android系統啟動流程。建議讀這篇文章前要通讀本系列的前三篇文章,否則你可能不會
閱讀全文
摘要:
1.Zygote啟動SystemServer進程 在上一篇文章中我們講到在ZygoteInit.java的startSystemServer函數中啟動了SyetemServer進程,如下所示。 frameworks/base/core/java/com/android/internal/os/Zyg
閱讀全文
摘要:
我們來學習Java虛擬機的結構原理與運行時數據區域。 1.Java虛擬機概述 Oracle官方定義的Java技術體系主要包括以下幾個部分: Java程序設計語言 各種平臺的Java虛擬機 Class文件格式 Java API類庫 第三方Java類庫 可以把Java程序設計語言、Java虛擬機和Jav
閱讀全文
摘要:
1.Zygote簡介 在Android系統中,DVM(Dalvik虛擬機)、應用程序進程以及運行系統的關鍵服務的SystemServer進程都是由Zygote進程來創建的,我們也將它稱為孵化器。它通過fock(復制進程)的形式來創建應用程序進程和SystemServer進程,由于Zygote進程在啟
閱讀全文
摘要:
一、作用 適配器模式(Adapter):將一個類的接口轉換成客戶希望的另外一個接口,使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。 二、適用場景 1. 業務的接口與工作的類不兼容,(比如:類中缺少實現接口的某些方法)但又需要兩者一起工作 2. 在現有接口和類的基礎上為新的業務需求提供接口
閱讀全文
摘要:
整體流程大致如下: 1.init簡介 init進程是Android系統中用戶空間的第一個進程,作為第一個進程,它被賦予了很多極其重要的工作職責,比如創建zygote(孵化器)和屬性服務等。init進程是由多個源文件共同組成的,這些文件位于源碼目錄system/core/init。本文將基于Andro
閱讀全文
摘要:
1.共享內存和消息傳遞 線程之間的通信機制有兩種:共享內存和消息傳遞;在共享內存的并發模型里,線程之間共享程序的公共狀態,線程之間通過寫-讀內存中的公共狀態來隱式進行通信。在消息傳遞的并發模型里,線程之間沒有公共狀態,線程之間必須通過明確的發送消息來顯式進行通信。 同步是指程序用于控制不同線程之間操
閱讀全文
摘要:
在現實中,需要線程之間的協作。比如說最經典的生產者-消費者模型:當隊列滿時,生產者需要等待隊列有空間才能繼續往里面放入商品,而在等待的期間內,生產者必須釋放對臨界資源(即隊列)的占用權。因為生產者如果不釋放對臨界資源的占用權,那么消費者就無法消費隊列中的商品,就不會讓隊列有空間,那么生產者就會一直無
閱讀全文