一直使用delphi,從大學到工作,一直依靠控件,當現在控件越來越少的時候發現自己
像剛畢業的學生,什麼都不會,從兩條路選擇,一個是從頭學delphi,要麼繼續用控件,從
頭學就要從最開始的底層學習,消息啊,線程啊,流的,等等可是delphi的路現在是越走
越窄,一般的公司也都是停留在維護階段了,既然要下決心從頭學起,那麼為什麼不學一
個新的技術呢,那麼就學自己喜歡的移動裝置吧,Android可是個好東西,開源,免費,
從現在開始記錄學習過程吧。
Android從系統架構
Android從系統架構上來說總共分為五個層,依次是應用程式層,應用程式架構層,系統運
行庫層,Linux核心層。
1、應用程式層
一些基本的功能就在這個裡,比如主界面,短信,月曆,地圖等等,他需要
應用程度架構層的支援也可以使用JAVA通過JNI方式,那麼什麼是JNI呢,
JNI(java Native Interface) java的本地調用,百度是這麼說的估計是為了調用
底層的C/C++語言,誰讓JAVA太高層了呢。
2、應用程式架構層
這個層就為了開發人員寫應用程式所使用的API架構,封裝了大多數的功能,
比如活動管理器,視窗管理器視圖系統等等,硬體的就有電話撥打,地圖服務,
藍牙,USB,傳感器等等
3、系統運作庫層
這層就比較底層了,分為兩部分,一個呢程式庫,為應用程式架構層提供服務,
比如什麼資料庫,2D3D的圖形引擎圖檔和字型的顯示,浏覽器的支援等等,
另一個就是運作時庫,分為核心庫和虛拟機,教育訓練的時候說在電腦上為了适應
跨平台而産生了虛機機,到手機上就從底層支援了JAVA,支援是支援了,
怎麼還存在虛機機,反正這裡是不太了解了。
4、Linux層 如記憶體管理,程序,驅動子產品,網絡棧,都在這裡,存在于軟體和硬體之間,
硬體時鐘,記憶體配置設定,Kernel調試,日志,電源管理
金山電源管理那軟體是不是就在這裡寫的?IPC機制(程序間通信)
Android初始化流程
1、開機 - Linux Kernel - Init
2、初始化後呢會産生兩個程序,一個是守護程序,一個是Zygote程序,感覺像一個是管理硬體的,一個是管理軟體的
3、守護程序會開啟四個守護程序,1、USB守護程序,2、Android Debug Bridge守護程序來管理ADB連接配接,
3、Debug守護程序,4、無線接口守護程序
4、Zygote會初始化一個Dalvik虛拟機執行個體,裝載監聽,管理應用程式的程序
5、然後初始化Runtime程序,有兩個操作,初始化服務管理器和注冊服務管理器,然後發送一個請求到Zygote,開啟系統
服務,那邊就建立了個虛拟機的執行個體,開啟系統服務
6、以後的事好像就是從虛拟機開始了,啟動原生系統服務,SurfaceFlinger和AudioFlinger注冊到服務管理器作為IPC服務的目标
7、系統服務将啟動android管理服務,都被注冊到伺服器管理器上
8、最後所有服務都處于等待狀态,等待程式運作。
今天到這裡,再學再寫。
主要就是Android的系統結構和初始化流程。