天天看點

【android基礎】Android中四大元件Android系統的架構

有些時候老是覺得自己有些浮躁,學習東西的時候總是太過于表面,隻顧花哨的上層展示,難得去了解更别說深入的學習更下層的東西。回過頭來看看,下層的東西搞明白之後再弄上層的會感覺豁然開朗。(當然剛剛入門的時候是可以從上層開始,這樣有助于提高興趣)不過還是應該對稍微底層一些的東西進行系統的學習和深入

android的系統架構和其作業系統一樣,采用了分層的架構。從架構圖看,android分為四個層,從高層到低層分别是應用程式層、應用程式架構層、系統運作庫層和linux核心層。

1.應用程式

     Android會同一系列核心應用程式包一起釋出,該應用程式包包括email用戶端,SMS短消息程式,月曆,地圖,浏覽器,聯系人管理程式等。所有的應用程式都是使用JAVA語言編寫的。

2.應用程式架構

     開發人員也可以完全通路核心應用程式所使用的API架構。該應用程式的架構設計簡化了元件的重用;任何一個應用程式都可以釋出它的功能塊并且任何其它的 應用程式都可以使用其所釋出的功能塊(不過得遵循架構的安全性限制)。同樣,該應用程式重用機制也使使用者可以友善的替換程式元件。

隐藏在每個應用後面的是一系列的服務和系統, 其中包括;

     * 豐富而又可擴充的視圖(Views),可以用來建構應用程式, 它包括清單(lists),網格(grids),文本框(text boxes),按鈕(buttons), 甚至可嵌入的web浏覽器。

     * 内容提供器(Content Providers)使得應用程式可以通路另一個應用程式的資料(如聯系人資料庫), 或者共享它們自己的資料

     * 資料總管(Resource Manager)提供 非代碼資源的通路,如本地字元串,圖形,和布局檔案( layout files )。

     * 通知管理器 (Notification Manager) 使得應用程式可以在狀态欄中顯示自定義的提示資訊。

     * 活動管理器( Activity Manager) 用來管理應用程式生命周期并提供常用的導航回退功能。

有關更多的細節和怎樣從頭寫一個應用程式,請參考 如何編寫一個 Android 應用程式.

3.系統運作庫

1)程式庫

     Android 包含一些C/C 庫,這些庫能被Android系統中不同的元件使用。它們通過 Android 應用程式架構為開發者提供服務。以下是一些核心庫:

     * 系統 C 庫 - 一個從 BSD 繼承來的标準 C 系統函數庫( libc ), 它是專門為基于 embedded linux 的裝置定制的。

     * 媒體庫 - 基于 PacketVideo OpenCORE;該庫支援多種常用的音頻、視訊格式回放和錄制,同時支援靜态圖像檔案。編碼格式包括MPEG4, H.264, MP3, AAC, AMR, JPG, PNG 。

     * Surface Manager - 對顯示子系統的管理,并且為多個應用程式提 供了2D和3D圖層的無縫融合。

     * LibWebCore - 一個最新的web浏覽器引擎用,支援Android浏覽器和一個可嵌入的web視圖。

     * SGL - 底層的2D圖形引擎

     * 3D libraries - 基于OpenGL ES 1.0 APIs實作;該庫可以使用硬體 3D加速(如果可用)或者使用高度優化的3D軟加速。

     * FreeType -位圖(bitmap)和矢量(vector)字型顯示。

     * SQLite - 一個對于所有應用程式可用,功能強勁的輕型關系型資料庫引擎。

2)Android 運作庫

     Android 包括了一個核心庫,該核心庫提供了JAVA程式設計語言核心庫的大多數功能。

每一個Android應用程式都在它自己的程序中運作,都擁有一個獨立的Dalvik虛拟機執行個體。Dalvik被設計成一個裝置可以同時高效地運作多個 虛拟系統。 Dalvik虛拟機執行(.dex)的Dalvik可執行檔案,該格式檔案針對小記憶體使用做了優化。同時虛拟機是基于寄存器的,所有的類都經由JAVA編 譯器編譯,然後通過SDK中 的 “dx” 工具轉化成.dex格式由虛拟機執行。

     Dalvik虛拟機依賴于linux核心的一些功能,比如線程機制和底層記憶體管理機制。

4.Linux 核心

     Android 的核心系統服務依賴于 Linux 2.6 核心,如安全性,記憶體管理,程序管理, 網絡協定棧和驅動模型。 Linux 核心也同時作為硬體和軟體棧之間的抽象層。

Android中四大元件

Android中稱為四大元件的為别為:Activity/Service/BroadCast Recevicer/Content  provider

Activity:activity是使用者和應用程式互動的視窗,一個activity相當于我們實際中的一個網頁,當打開一個螢幕時,之前的那一個螢幕會被置為暫停狀态,并且壓入曆史堆棧中,使用者可以通過回退操作傳回到以前打開過的螢幕。activity的生命周期:即“産生、運作、銷毀”,但是這其中會調用許多方法onCreate(建立)

、onStart(激活) 、onResume(恢複) 、onPause(暫停) 、onStop(停止) 、onDestroy(銷毀) 、onRestart(重新開機)。

Service:Service是一種程式,它可以運作很長的時間,相當于背景的一個服務,通過startService(Intent service)可以啟動一個Service,通過Context.bindService()可以綁定一個Service。

BroadCast Recevicer:接受一種或者多種Intent作觸發事件,接受相關消息,做一些簡單處理,轉換成一條Notification,統一了Android的事件廣播模型。可以使用BroadcastReceiver來讓應用對外一個外部的事件作出響應。Broadcast Receiver通過NotificationManager來通知使用者這些事情發生了,BroadcastReceiver注冊的有兩種方式,一種是可以在AndroidManifest.xml中注冊,另一種可以在運作時的代碼中使用Context.registerReceiver()進行注冊。使用者還可以通過Context.sendBroadcast()将他們自己的intent

broadcasts廣播給其他的應用程式。

Content provider:内容提供者,可通過它來共享自己的資料給外部調用,給第三方應用提供資料通路的接口。