android 開發概述以及相關背景知識
參考鏈接:http://www.runoob.com/android/android-architecture.html
http://www.runoob.com/android/android-application-components.html
Android 架構
Android 操作系統是一個軟件組件的棧,在架構圖中它大致可以分為五個部分和四個主要層。
Linux內核
在所有層的最底下是 Linux - 包括大約115個補丁的 Linux 3.6。它提供了基本的系統功能,比如進程管理,內存管理,設備管理(如攝像頭,鍵盤,顯示器)。同時,內核處理所有 Linux 所擅長的工作,如網絡和大量的設備驅動,從而避免兼容大量外圍硬件接口帶來的不便。
程序庫
在 Linux 內核層的上面是一系列程序庫的集合,包括開源的 Web 瀏覽器引擎 Webkit ,知名的 libc 庫,用於倉庫存儲和應用數據共享的 SQLite 數據庫,用於播放、錄制音視頻的庫,用於網絡安全的 SSL 庫等。
Android程序庫
這個類別包括了專門為 Android 開發的基於 Java 的程序庫。這個類別程序庫的示例包括應用程序框架庫,如用戶界面構建,圖形繪制和數據庫訪問。一些 Android 開發者可用的 Android 核心程序庫總結如下:
- android.app - 提供應用程序模型的訪問,是所有 Android 應用程序的基石。
- android.content - 方便應用程序之間,應用程序組件之間的內容訪問,發布,消息傳遞。
- android.database - 用於訪問內容提供者發布的數據,包含 SQLite 數據庫管理類。
- android.opengl - OpenGL ES 3D 圖片渲染 API 的 Java 接口。
- android.os - 提供應用程序訪問標註操作系統服務的能力,包括消息,系統服務和進程間通信。
- android.text - 在設備顯示上渲染和操作文本。
- android.view - 應用程序用戶界面的基礎構建塊。
- android.widget - 豐富的預置用戶界面組件集合,包括按鈕,標簽,列表,布局管理,單選按鈕等。
- android.webkit - 一系列類的集合,允許為應用程序提供內建的 Web 瀏覽能力。
看過了 Android 運行層內的基於 Java 的核心程序庫,是時候關註一下 Android 軟件棧中的基於 C/C++ 的程序庫。
Android運行時
這是架構中的第三部分,自下而上的第二層。這個部分提供名為 Dalvik 虛擬機的關鍵組件,類似於 Java 虛擬機,但專門為 Android 設計和優化。
Dalvik 虛擬機使得可以在 Java 中使用 Linux 核心功能,如內存管理和多線程。Dalvik 虛擬機使得每一個 Android 應用程序運行在自己獨立的虛擬機進程。
Android 運行時同時提供一系列核心的庫來為 Android 應用程序開發者使用標準的 Java 語言來編寫 Android 應用程序。
應用框架
應用框架層以 Java 類的形式為應用程序提供許多高級的服務。應用程序開發者被允許在應用中使用這些服務。
- 活動管理者 - 控制應用程序生命周期和活動棧的所有方面。
- 內容提供者 - 允許應用程序之間發布和分享數據。
- 資源管理器 - 提供對非代碼嵌入資源的訪問,如字符串,顏色設置和用戶界面布局。
- 通知管理器 - 允許應用程序顯示對話框或者通知給用戶。
- 視圖系統 - 一個可擴展的視圖集合,用於創建應用程序用戶界面。
應用程序
頂層中有所有的 Android 應用程序。你寫的應用程序也將被安裝在這層。這些應用程序包括通訊錄,瀏覽器,遊戲等。
Android 應用程序組件
應用程序組件是一個Android應用程序的基本構建塊。這些組件由應用清單文件松耦合的組織。AndroidManifest.xml描述了應用程序的每個組件,以及他們如何交互。
以下是可以在Android應用程序中使用的四個主要組件。
組件 | 描述 |
---|---|
Activities | 描述UI,並且處理用戶與機器屏幕的交互。 |
Services | 處理與應用程序關聯的後臺操作。 |
Broadcast Receivers | 處理Android操作系統和應用程序之間的通信。 |
Content Providers | 處理數據和數據庫管理方面的問題。 |
Activities
一個活動標識一個具有用戶界面的單一屏幕。舉個例子,一個郵件應用程序可以包含一個活動用於顯示新郵件列表,另一個活動用來編寫郵件,再一個活動來閱讀郵件。當應用程序擁有多於一個活動,其中的一個會被標記為當應用程序啟動的時候顯示。
一個活動是Activity類的一個子類,如下所示:
public class MainActivity extends Activity { }
Services
服務是運行在後臺,執行長時間操作的組件。舉個例子,服務可以是用戶在使用不同的程序時在後臺播放音樂,或者在活動中通過網絡獲取數據但不阻塞用戶交互。
一個服務是Service類的子類,如下所示:
public class MyService extends Service { }
Broadcast Receivers
廣播接收器簡單地響應從其他應用程序或者系統發來的廣播消息。舉個例子,應用程序可以發起廣播來讓其他應用程序指導一些數據已經被下載到設備,並且可以供他們使用。因此廣播接收器會攔截這些通信並采取適當的行動。
廣播接收器是BroadcastReceiver類的一個子類,每個消息以Intent對象的形式來廣播。
public class MyReceiver extends BroadcastReceiver { }
Content Providers
內容提供者組件通過請求從一個應用程序到另一個應用程序提供數據。這些請求由ContentResolver類的方法來處理。這些數據可以是存儲在文件系統、數據庫或者其他其他地方。
內容提供者是ContentProvider類的子類,並實現一套標準的API,以便其他應用程序來執行事務。
public class MyContentProvider extends ContentProvider { }
我們將在獨立的章節中通過這些標簽的細節來涵蓋應用程序組件。
附件組件
有一些附件的組件用於以上提到的實體、他們之間邏輯、及他們之間連線的構造。這些組件如下:
組件 | 描述 |
---|---|
Fragments | 代表活動中的一個行為或者一部分用戶界面。 |
Views | 繪制在屏幕上的UI元素,包括按鈕,列表等。 |
Layouts | 控制屏幕格式,展示視圖外觀的View的繼承。 |
Intents | 組件間的消息連線。 |
Resources | 外部元素,例如字符串資源、常量資源及圖片資源等。 |
Manifest | 應用程序的配置文件。 |
android 開發概述以及相關背景知識