Android Framework Application Framework層簡單介紹
引言
Android的四層架構(gòu)相比大家都很清楚,老生常談的說一下分別為:Linux2.6內(nèi)核層,核心庫層,應(yīng)用框架層,應(yīng)用層。我今天重點(diǎn)介紹一下應(yīng)用框架層Framework,其實(shí)也是我自己的學(xué)習(xí)心得。
Framework層為我們開發(fā)應(yīng)用程序提供了非常多的API,我們通過調(diào)用特殊的API構(gòu)造我們的APP,滿足我們業(yè)務(wù)上的需求。寫APP的人都知道,學(xué)習(xí)Android開發(fā)的第一步就是去學(xué)習(xí)各種各樣的API,什么Activity,Service,Notification等。這些都是framework提供給我們的,那么我就詳細(xì)的講講Framework到底在整個(gè)Android架構(gòu)中扮演著什么角色。
Framework功能
Framework其實(shí)可以簡單的理解為一些API的庫房,android開發(fā)人員將一些基本功能實(shí)現(xiàn),通過接口提供給上層調(diào)用,可以重復(fù)的調(diào)用
我們可以稱Framework層才真正是Java語言實(shí)現(xiàn)的層,在這層里定義的API都是用Java語言編寫。但是又因?yàn)樗薐NI的方法,JNI用C/C++編寫接口,根據(jù)函數(shù)表查詢調(diào)用核心庫層里的底層方法,最終訪問到Linux內(nèi)核。那么Framework層的作用就有2個(gè)。
1.用Java語言編寫一些規(guī)范化的模塊封裝成框架,供APP層開發(fā)者調(diào)用開發(fā)出具有特殊業(yè)務(wù)的手機(jī)應(yīng)用。
2.用Java Native Interface調(diào)用core lib層的本地方法,JNI的庫是在Dalvik虛擬機(jī)啟動(dòng)時(shí)加載進(jìn)去的,Dalvik會直接去尋址這個(gè)JNI方法,然后去調(diào)用。
2種方式的結(jié)合達(dá)到了Java方法和操作系統(tǒng)的相互通信。Android為什么要用Java編寫Framework層呢?直接用C或C++不是更好?有關(guān)專家給出了如下解釋:
C/C++過于底層,開發(fā)者要花很多的經(jīng)歷對C/C++的語言研究清楚,例如C/C++的內(nèi)存機(jī)制,如果稍不注意,就會忘了開啟或者釋放。而Java的GC會自動(dòng)處理這些,省去了很多的時(shí)間讓開發(fā)者專注于自己的業(yè)務(wù)。所以才會從C/C++的底層慢慢向上變成了JAVA的開發(fā)語言,該層通過JNI和核心運(yùn)行庫層進(jìn)行交互。
其實(shí)這些也是Java能發(fā)展這么迅速的原因,面對對象語言的優(yōu)勢。不用太關(guān)注內(nèi)存,放心大膽的去做實(shí)現(xiàn),才有時(shí)間去創(chuàng)造新的事物。
Framework API

Activity Manager
用來管理應(yīng)用程序生命周期并提供常用的導(dǎo)航回退功能。
Window Manager
提供一些我們訪問手機(jī)屏幕的方法。屏幕的透明度、亮度、背景。
Content Providers
使得應(yīng)用程序可以訪問另一個(gè)應(yīng)用程序的數(shù)據(jù)(如聯(lián)系人數(shù)據(jù)庫), 或者共享它們自己的數(shù)據(jù)。
View System
可以用來構(gòu)建應(yīng)用程序, 它包括列表(Lists),網(wǎng)格(Grids),文本框(Text boxes),按鈕(Buttons), 甚至可嵌入的web瀏覽器。
Notification Manager
使得應(yīng)用程序可以在狀態(tài)欄中顯示自定義的提示信息。
Package Manager
提供對系統(tǒng)的安裝包的訪問。包括安裝、卸載應(yīng)用,查詢permission相關(guān)信息,查詢Application相關(guān)信息等。
Telephony Manager
主要提供了一系列用于訪問與手機(jī)通訊相關(guān)的狀態(tài)和信息的方法,查詢電信網(wǎng)絡(luò)狀態(tài)信息,sim卡的信息等。
Resource Manager
提供非代碼資源的訪問,如本地字符串,圖形,和布局文件(Layout files )。
Location Manager
提供設(shè)備的地址位置的獲取方式。很顯然,GPS導(dǎo)航肯定能用到位置服務(wù)。
XMPP
可擴(kuò)展通訊和表示協(xié)議。前身為Jabber,提供即時(shí)通信服務(wù)。例如推送功能,Google Talk。
。。。。
Framework層提供的服務(wù)還有很多,就不一一列出啦。
總結(jié)
從Android的整體框架開始,我們只詳細(xì)介紹了一下Framework層,對其作用和功能,以及在4層框架中所扮演的角色做了簡單的闡述。然后列舉出來它提供給上層的一些重要的服務(wù)。對Application Framework有了一個(gè)簡單的印象性了解,以此為開始,以后再對每個(gè)服務(wù)詳細(xì)研究。
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關(guān)文章
Android權(quán)限如何禁止以及友好提示用戶開通必要權(quán)限詳解
這篇文章主要給大家介紹了關(guān)于Android權(quán)限如何禁止以及友好提示用戶開通必要權(quán)限的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對各位Android開發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
Android之有效防止按鈕多次重復(fù)點(diǎn)擊的方法(必看篇)
下面小編就為大家?guī)硪黄狝ndroid之有效防止按鈕多次重復(fù)點(diǎn)擊的方法(必看篇)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-04-04
Android實(shí)現(xiàn)連續(xù)點(diǎn)擊多次事件的代碼詳解
小編經(jīng)常遇到這樣的需求類似進(jìn)入開發(fā)者模式,即多次點(diǎn)擊后執(zhí)行操作。下面小編通過實(shí)例代碼給大家講解Android實(shí)現(xiàn)連續(xù)點(diǎn)擊多次事件的相關(guān)知識,感興趣的朋友跟隨小編一起學(xué)習(xí)吧2018-10-10
Android實(shí)現(xiàn)單行標(biāo)簽流式布局
這篇文章主要為大家詳細(xì)介紹了Android單行標(biāo)簽流式布局,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-09-09
Kotlin 使用高階函數(shù)實(shí)現(xiàn)回調(diào)方式
這篇文章主要介紹了Kotlin 使用高階函數(shù)實(shí)現(xiàn)回調(diào)方式,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03
Android判斷軟鍵盤的狀態(tài)和隱藏軟鍵盤的簡單實(shí)例
下面小編就為大家?guī)硪黄狝ndroid判斷軟鍵盤的狀態(tài)和隱藏軟鍵盤的簡單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-10-10
Android Studio / IDEA kotlin 顯示 var 真實(shí)類型操作
這篇文章主要介紹了Android Studio / IDEA kotlin 顯示 var 真實(shí)類型操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08
Android基于google Zxing實(shí)現(xiàn)二維碼的生成
這篇文章主要介紹了Android基于google Zxing實(shí)現(xiàn)二維碼的生成的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-06-06
Android?Studio實(shí)現(xiàn)音樂播放器2.0的全過程
音樂帶給人的聽覺享受是無可比擬的,動(dòng)聽的音樂能夠愉悅?cè)说纳硇?讓人更加積極地去熱愛生活,下面這篇文章主要給大家介紹了關(guān)于Android?Studio實(shí)現(xiàn)音樂播放器2.0的相關(guān)資料,需要的朋友可以參考下2022-02-02

