Android Framework中的Application Framework層介紹
引言
Android的四層架構相比大家都很清楚,老生常談的說一下分別為:Linux2.6
核心層,核心庫層,應用框架層,應用層。我今天重點介紹一下應用框架層Framework
,其實也是我自己的學習心得。
Framework層為我們開發應用程式提供了非常多的API
,我們通過呼叫特殊的API構造我們的APP,滿足我們業務上的需求。寫APP的人都知道,學習Android開發的第一步就是去學習各種各樣的API,什麼Activity,Service,Notification
等。這些都是framework
提供給我們的,那麼我就詳細的講講Framework
到底在整個Android
架構中扮演著什麼角色。
Framework功能
Framework
其實可以簡單的理解為一些API的庫房,android
開發人員將一些基本功能實現,通過介面提供給上層呼叫,可以重複的呼叫
我們可以稱Framework
層才真正是Java
語言實現的層,在這層裡定義的API
都是用Java語言編寫。但是又因為它包含了JNI
的方法,JNI
用C/C++
編寫介面,根據函式表查詢呼叫核心庫層裡的底層方法,最終訪問到Linux
核心。那麼Framework
層的作用就有2個。
-
用Java語言編寫一些規範化的模組封裝成框架,供
APP
層開發者呼叫開發出具有特殊業務的手機應用。 -
用
Java Native Interface
呼叫core lib
層的本地方法,JNI
的庫是在Dalvik
虛擬機器啟動時載入進去的,Dalvik
會直接去定址這個JNI
方法,然後去呼叫。
2種方式的結合達到了Java方法和作業系統的相互通訊。Android為什麼要用Java
編寫Framework
層呢?直接用C或C++
不是更好?有關專家給出瞭如下解釋:
C/C++
過於底層,開發者要花很多的經歷對C/C++
的語言研究清楚,例如C/C++
的記憶體機制,如果稍不注意,就會忘了開啟或者釋放。而Java
的GC
會自動處理這些,省去了很多的時間讓開發者專注於自己的業務。所以才會從C/C++
的底層慢慢向上變成了JAVA
的開發語言,該層通過JNI
和核心執行庫層進行互動。
其實這些也是Java能發展這麼迅速的原因,面對物件語言的優勢。不用太關注記憶體,放心大膽的去做實現,才有時間去創造新的事物。
Framework API
Activity Manager
用來管理應用程式生命週期並提供常用的導航回退功能。
Window Manager
提供一些我們訪問手機螢幕的方法。螢幕的透明度、亮度、背景。
Content Providers
使得應用程式可以訪問另一個應用程式的資料(如聯絡人資料庫), 或者共享它們自己的資料。
View System
可以用來構建應用程式, 它包括列表(Lists
),網格(Grids
),文字框(Text boxes
),按鈕(Buttons
), 甚至可嵌入的web瀏覽器。
Notification Manager
使得應用程式可以在狀態列中顯示自定義的提示資訊。
Package Manager
提供對系統的安裝包的訪問。包括安裝、解除安裝應用,查詢permission
相關資訊,查詢Application相關資訊等。
Telephony Manager
主要提供了一系列用於訪問與手機通訊相關的狀態和資訊的方法,查詢電信網路狀態資訊,sim卡的資訊等。
Resource Manager
提供非程式碼資源的訪問,如本地字串,圖形,和佈局檔案(Layout files
)。
Location Manager
提供裝置的地址位置的獲取方式。很顯然,GPS導航肯定能用到位置服務。
XMPP
可擴充套件通訊和表示協議。前身為Jabber
,提供即時通訊服務。例如推送功能,Google Talk。
。。。
Framework
層提供的服務還有很多,就不一一列出啦。
總結
從Android
的整體框架開始,我們只詳細介紹了一下Framework
層,對其作用和功能,以及在4層框架中所扮演的角色做了簡單的闡述。然後列舉出來它提供給上層的一些重要的服務。對Application Framework
有了一個簡單的印象性瞭解,以此為開始,以後再對每個服務詳細研究。Thanks
相關文章
- Android Framework層JNI的使用淺析AndroidFramework
- iOS中的動態庫,靜態庫和framework介紹iOSFramework
- Spring Framework 參考文件(WebSocket介紹)SpringFrameworkWeb
- Jdon Framework新版本新功能介紹Framework
- Oracle OAF(Oracle Application Framework) SampleOracleAPPFramework
- Android FrameworkAndroidFramework
- android studio 除錯 framework 層程式碼Android除錯Framework
- ABP Framework V4.4 RC 新增功能介紹Framework
- Spring Framework 官方文件學習(一)介紹SpringFramework
- NET Framework簡介Framework
- ABP Framework 5.2 RC 釋出及新增功能介紹Framework
- 我眼中的Android FrameworkAndroidFramework
- framework——DisplayContent簡介Framework
- Android Framework 音訊子系統(12)HAL層分析AndroidFramework音訊
- 【framework】framework中為systemserver新增許可權FrameworkServer
- Android Framework核心之旅AndroidFramework
- Spring_Framework_簡介SpringFramework
- Entity Framework 學習初級篇2--ObjectContext類的介紹FrameworkObjectContext
- Android Framework : Alarm 機制AndroidFramework
- Qt 之 Graphics View Framework 簡介QTViewFramework
- 前端框架 Quasar-Framework 簡介前端框架Framework
- LeaRun.Framework━ .NET快速開發框架 ━ 工作流程元件介紹Framework框架元件
- Django REST Framework中的Serializer relationsDjangoRESTFramework
- .NET Framework (最新版本到.NET Framework 4.7.2)中的新增功能Framework
- Android framework中使用stl庫AndroidFramework
- Android Test Base--JUnit FrameworkAndroidFramework
- iOS中,Framework和 a的打包及使用iOSFramework
- Android FrameWork 之原始碼編譯AndroidFramework原始碼編譯
- 如何反編譯Android 5.0 framework編譯AndroidFramework
- Entity Framework Tutorial Basics(20):Persistence in Entity FrameworkFramework
- Entity Framework Tutorial Basics(2):What is Entity Framework?Framework
- 改造動態framework為靜態frameworkFramework
- RUF MVC5 Repositories Framework Generator程式碼生成工具介紹和使用MVCFramework
- Zend Framework 2.0 (zf2) 正式版釋出及新功能介紹Framework
- XNA FrameworkFramework
- ios,framework的坑iOSFramework
- .NET 5 中 Target Framework 詳解Framework
- SAP 中的 BOPF(Business Object Processing Framework)ObjectFramework