本篇內容主要目的在從整體上了解Android 龐大的系統(tǒng)架構,根據(jù)系統(tǒng)架構中的不同模塊和分層找到和梳理一條學習路徑,這樣能更好的切入到不同的模塊學習,直到最后全部打通。
創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供正陽網站建設、正陽做網站、正陽網站設計、正陽網站制作等企業(yè)網站建設、網頁設計與制作、正陽企業(yè)網站模板建站服務,十年正陽做網站經驗,不只是建網站,更提供有價值的思路和整體網絡服務。
接下來我們從兩個角度來分析
下面這張圖是Android官方提供的一張Android系統(tǒng)的預覽圖。
從上面這個圖中我們可以知道,Android系統(tǒng)一共有5部分組成,他們分別是
從縱向層級架構的角度來看,我們了解了android系統(tǒng)經典5層結構,他們如壘磚一般縱向堆疊在一起。但是其實每一層都包含了大量的子模塊子系統(tǒng),并不能體現(xiàn)出Android整個系統(tǒng)的內部架構、運行機理,以及各個模塊之間是如何銜接與配合工作的。接下來借鑒了gityuan總結的一張系統(tǒng)進程圖,從系統(tǒng)進程的角度來看Android系統(tǒng)的工作原理。
Loader層: 引導kernel啟動
Kernel層: Android內核空間
Native層: 進入用戶空間
Framework層: 給app層提供api以及系統(tǒng)服務,
App層: 各種各樣的應用程序apk
參考文獻:
首先Android開發(fā)主要是有三個層次的技術:
1、第一個層次和傳統(tǒng)的嵌入式Linux最接近,主要涉及的是CPU、GPU以及外設的驅動以及使能方面。需要熟悉Linux內核,Android框架定義中驅動的接口規(guī)范等等,這部分開源社區(qū)的力量最大。
2、第二個層次主要是涉及Android框架中間件部分,如多媒體/3D框架,Java虛擬機等等,這部分Google控制的是最嚴格的,因為他要控制Android各種feature以及捆綁自己的移動互聯(lián)網應用,必須規(guī)范中間件。這部分所涉及的軟件技術也最多,從各種C/C++庫,Java虛擬機性 能,用戶體驗抽象到數(shù)據(jù)庫設計等等很大的內涵。
3、第三個層次就是App開發(fā)層次,這個層次主要就是利用Android SDK開發(fā)了。很多C/C++出身的覺得是用Java開發(fā),其實Java就是啥都是指針的C++,外帶try/catch以及垃圾收集,上手其實是很快的。
4、如果你是個新手的話建議你多掌握些技術知識,不管是自學還是去其他地方學習,教學聯(lián)盟也許會幫助到你,暫且說到這里。
在App運行過程中,我們的視圖層級可能會由于用戶的操作一直在發(fā)生改變,甚至可能會有一些出乎預料的變化,本文將會介紹 如何進行Android視圖實時分析,分析View的視圖層級及屬性變化。
首先,筆者先來一個簡單的Demo實例。我們使用Android Studio新建一個Empty Android工程,跑一下程序,界面如下圖所示:
接下來,我們要對視圖層級進行分析,但分析之前先給各位介紹兩個視圖分析工具。
1. Android SDK 中 tools 包下的 hierarchyviewer ,最終展現(xiàn)的視圖效果如下:
2. Android Studio 也有自帶的視圖分析工具 Layout Inspector(布局檢查器) ,打開方式如下圖所示:
可以看到Layout Inspector最右側的屬性欄可以查看 每一個View的所附帶的屬性及屬性值 。
從根視圖開始分析視圖層級,如下圖所示:
DecorView的第一個子View(LinearLayout), 如下圖所示:
DecorView的第二個子View(View),如下圖所示:
DecorView的第三個子View(View),如下圖所示:
至此,DecorView的最外層View全部分析完畢。
接下來,分析DecorView的第一個子View(LinearLayout),如下圖所示:
ViewStub的屬性信息,如下圖所示:
FrameLayout的屬性信息,如下圖所示:
接下來,繼續(xù)分析FrameLayout的子View,如下圖所示:
ContentFrameLayout的視圖屬性,如下圖所示:
ActionBarContainer的視圖屬性,如下圖所示:
不過,還有個問題需要提醒一下, 不同機型,不同系統(tǒng)主題設置 生成的視圖結構可能會不一樣,舉兩個例子:
例一:筆者把使用的模擬器換成自己的手機(360N5 Android 6.0.1) ,運行后視圖布局如下:
可以看到 筆者的手機是沒有NavigationBar(底部導航欄)的 。
例二:筆者把Activity的主題"Theme.AppCompat.Light.DarkActionBar"換成無標題欄主題"Theme.AppCompat.Light.NoActionBar" ,運行后視圖布局如下:
可以看到視圖結構與我們之前分析的相比,發(fā)生了一些變化。
最后,還有個細節(jié)給各位補充下: Layout Inspector 只能分析出Android Studio當前 “正在運行的APP” 的視圖布局結構,其他應用的視圖布局結構是無法顯示的。
如果我們想要分析一個第三方應用(如:微信、QQ)的視圖結構可以使用 Android Device Monitor(安卓設備監(jiān)視器) ,具體打開步驟如下圖所示:
以QQ為例,我們先打開手機QQ,顯示出QQ主界面,然后按照下圖的 "紅色圈選" ,依次點擊,當前的視圖結構就出來了,但是相比于 Layout Inspector 工具,視圖屬性信息提供的較少...
視圖層級分析 到此結束,有時間再補篇源碼,分析一下布局加載的流程。
寫這篇文章的時候被IOS同事嘲諷了,它們吐槽Android的視圖分析工具太渣,最后對比看了下,Android的視圖分析工具確實沒有IOS的高大上......╮(╯▽╰)╭
最后,秀一下IOS的視圖分析工具 Reveal ,如下圖所示:
新聞名稱:android層級,android體系結構
網址分享:http://jinyejixie.com/article38/dsdgcpp.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供網站制作、品牌網站制作、網站策劃、App開發(fā)、全網營銷推廣、品牌網站建設
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)