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 studio 除錯 framework 層程式碼Android除錯Framework
- Android FrameworkAndroidFramework
- Spring Framework 參考文件(WebSocket介紹)SpringFrameworkWeb
- Android Media Framework(一)OpenMAX 框架簡介AndroidFramework框架
- iOS中的動態庫,靜態庫和framework介紹iOSFramework
- ABP Framework V4.4 RC 新增功能介紹Framework
- framework——DisplayContent簡介Framework
- Android Framework 音訊子系統(12)HAL層分析AndroidFramework音訊
- ABP Framework 5.2 RC 釋出及新增功能介紹Framework
- Android Media Framework - 開篇AndroidFramework
- Android Framework: 增加trace點AndroidFramework
- Spring_Framework_簡介SpringFramework
- Android Media Framework(五)Tunnel ModeAndroidFramework
- Android FrameWork 之原始碼編譯AndroidFramework原始碼編譯
- Qt 之 Graphics View Framework 簡介QTViewFramework
- 前端框架 Quasar-Framework 簡介前端框架Framework
- LeaRun.Framework━ .NET快速開發框架 ━ 工作流程元件介紹Framework框架元件
- .NET Framework (最新版本到.NET Framework 4.7.2)中的新增功能Framework
- Django REST Framework中的Serializer relationsDjangoRESTFramework
- android 8.0 Autofill Framework (自動填充框架)AndroidFramework框架
- 訪問framework中hide方法FrameworkIDE
- SAP 中的 BOPF(Business Object Processing Framework)ObjectFramework
- Kyma Application Connectivity 特性介紹APP
- [Android Framework]獲取U盤 SD 狀態AndroidFramework
- android原始碼framework下新增新資源的方法Android原始碼Framework
- .NET Framework 4和.NET Framework 4 Client Profile的區別Frameworkclient
- Android FrameWork學習(二)Android系統原始碼除錯AndroidFramework原始碼除錯
- 【C# .Net Framework】在.Net Framework中使用gRPCC#FrameworkRPC
- Entity Framework Core中的併發處理Framework
- .NET 5 中 Target Framework 詳解Framework
- 基於Android5.0的Camera Framework原始碼分析 (三)AndroidFramework原始碼
- Android Media Framework(三)OpenMAX API閱讀與分析AndroidFrameworkAPI
- Spring Framework BeanUtils的使用SpringFrameworkBean
- Accelerate Framework in SwiftFrameworkSwift
- .net framework 5.0Framework
- Entity Framework(1)Framework
- framework7Framework
- Spring framework核心SpringFramework