Android Framework Application Framework層簡單介紹
引言
Android的四層架構(gòu)相比大家都很清楚,老生常談的說一下分別為:Linux2.6內(nèi)核層,核心庫層,應(yīng)用框架層,應(yīng)用層。我今天重點(diǎn)介紹一下應(yīng)用框架層Framework,其實也是我自己的學(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到底在整個Android架構(gòu)中扮演著什么角色。
Framework功能
Framework其實可以簡單的理解為一些API的庫房,android開發(fā)人員將一些基本功能實現(xiàn),通過接口提供給上層調(diào)用,可以重復(fù)的調(diào)用
我們可以稱Framework層才真正是Java語言實現(xiàn)的層,在這層里定義的API都是用Java語言編寫。但是又因為它包含了JNI的方法,JNI用C/C++編寫接口,根據(jù)函數(shù)表查詢調(diào)用核心庫層里的底層方法,最終訪問到Linux內(nèi)核。那么Framework層的作用就有2個。
1.用Java語言編寫一些規(guī)范化的模塊封裝成框架,供APP層開發(fā)者調(diào)用開發(fā)出具有特殊業(yè)務(wù)的手機(jī)應(yīng)用。
2.用Java Native Interface調(diào)用core lib層的本地方法,JNI的庫是在Dalvik虛擬機(jī)啟動時加載進(jìn)去的,Dalvik會直接去尋址這個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會自動處理這些,省去了很多的時間讓開發(fā)者專注于自己的業(yè)務(wù)。所以才會從C/C++的底層慢慢向上變成了JAVA的開發(fā)語言,該層通過JNI和核心運(yùn)行庫層進(jìn)行交互。
其實這些也是Java能發(fā)展這么迅速的原因,面對對象語言的優(yōu)勢。不用太關(guān)注內(nèi)存,放心大膽的去做實現(xiàn),才有時間去創(chuàng)造新的事物。
Framework API
Activity Manager
用來管理應(yīng)用程序生命周期并提供常用的導(dǎo)航回退功能。
Window Manager
提供一些我們訪問手機(jī)屏幕的方法。屏幕的透明度、亮度、背景。
Content Providers
使得應(yīng)用程序可以訪問另一個應(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,提供即時通信服務(wù)。例如推送功能,Google Talk。
。。。。
Framework層提供的服務(wù)還有很多,就不一一列出啦。
總結(jié)
從Android的整體框架開始,我們只詳細(xì)介紹了一下Framework層,對其作用和功能,以及在4層框架中所扮演的角色做了簡單的闡述。然后列舉出來它提供給上層的一些重要的服務(wù)。對Application Framework有了一個簡單的印象性了解,以此為開始,以后再對每個服務(wù)詳細(xì)研究。
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關(guān)文章
Android拖拽助手ViewDragHelper的創(chuàng)建與使用實例
ViewDragHelper是針對 ViewGroup 中的拖拽和重新定位 views 操作時提供了一系列非常有用的方法和狀態(tài)追蹤,下面這篇文章主要給大家介紹了關(guān)于Android拖拽助手ViewDragHelper的創(chuàng)建與使用的相關(guān)資料,需要的朋友可以參考下2022-05-05listView的item中有checkbox,導(dǎo)致setOnItemClick失效的原因及解決辦法
這篇文章主要介紹了listView的item中有checkbox,導(dǎo)致setOnItemClick失效的原因及解決辦法,需要的朋友可以參考下2017-01-01Android 監(jiān)聽手機(jī)GPS打開狀態(tài)實現(xiàn)代碼
這篇文章主要介紹了Android 監(jiān)聽手機(jī)GPS打開狀態(tài)實現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下2017-05-05Android自定義View實現(xiàn)簡單的圓形Progress效果
這篇文章主要介紹了Android自定義View實現(xiàn)簡單的圓形Progress效果的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-09-09Android 開發(fā)仿簡書登錄框可刪除內(nèi)容或顯示密碼框的內(nèi)容
本文通過實例代碼給大家分享android開發(fā)中模仿簡書登錄框可刪除內(nèi)容或顯示密碼框的內(nèi)容,非常不錯,具有參考借鑒價值,需要的朋友參考下吧2016-12-12Flutter定義tabbar底部導(dǎo)航路由跳轉(zhuǎn)的方法
這篇文章主要為大家詳細(xì)介紹了Flutter定義tabbar底部導(dǎo)航路由跳轉(zhuǎn)的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-07-07Android Listview點(diǎn)贊問題關(guān)于圖片重復(fù)問題
最近在開發(fā)android方面的項目時,遇到很多問題,下面小編以listview 與 baseadapter結(jié)合使用為例,給大家分享下關(guān)于點(diǎn)贊的的時候 圖片重復(fù)問題的解決方法,一起看看吧2016-11-11