應用基礎知識

Android 應用程式是用 Java 編寫的。Android SDK 工具將程式碼,資料和資原始檔編譯為 APK(Android 包)。通常,一個 APK 檔案包含應用的所有內容。

每個應用程式都在自己的虛擬機器(VM)上執行,以便應用程式可以與其他應用程式隔離執行。Android 系統使用最小許可權原則。每個應用程式只能訪問其工作所需的元件,而不是更多。但是,有一些應用程式可以與其他應用程式共享資料,例如通過在應用程式之間共享 Linux 使用者 ID,或者應用程式可以請求訪問 SD 卡,聯絡人等裝置資料的許可權。

應用元件

應用程式元件是 Android 應用程式的構建塊。每個元件在 Android 應用程式中扮演特定角色,該應用程式具有不同的用途並具有不同的生命週期(元件建立和銷燬的方式和時間流程)。以下是四種型別的應用程式元件:

  1. 活動: 活動表示具有使用者介面(UI)的單個螢幕。Android 應用可能包含多項活動。 (例如,電子郵件應用程式可能有一個活動列出所有電子郵件,另一個用於顯示每封電子郵件的內容,另一個用於撰寫新電子郵件。)應用程式中的所有活動共同建立使用者體驗(UX)。
  2. 服務: 服務在後臺執行以執行長時間執行的操作或執行遠端程序的工作。服務不提供任何 UI,它僅在使用者輸入的後臺執行。 (例如,當使用者在不同的應用程式中時,服務可以在後臺播放音樂,或者它可以從網際網路上下載資料而不會阻止使用者與 Android 裝置的互動。)
  3. 內容提供商: 內容提供商管理共享應用資料。有四種方法可以在應用程式中儲存資料:它可以寫入檔案並儲存在檔案系統中,插入或更新到 SQLite 資料庫,釋出到 Web 或儲存在 App 可以訪問的任何其他持久儲存位置。通過內容提供商,其他應用可以查詢甚至修改資料。 (例如,Android 系統提供管理使用者聯絡資訊的內容提供商,以便任何具有許可權的應用可以查詢聯絡人。)內容提供商還可用於儲存應用程式專用的資料,以提高資料完整性。
  4. 廣播接收器: 廣播接收器響應系統範圍的廣播廣播(例如,宣佈螢幕已關閉,電池電量低等的廣播)或來自應用程式(例如,讓其他應用程式知道某些資料已被下載到裝置並可供他們使用)。廣播接收器沒有 UI,但是它們可以在狀態列中顯示通知以提醒使用者。通常,廣播接收器用作應用程式其他元件的閘道器,主要由活動和服務組成。

Android 系統的一個獨特之處在於,任何應用程式都可以啟動另一個應用程式的元件(例如,如果你想要撥打電話,傳送簡訊,開啟網頁或檢視照片,有一個應用程式已經這樣做,你的應用程式可以利用它,而不是為同一個任務開發一個新的活動)。

當系統啟動一個元件時,它會啟動該應用程式的程序(如果它尚未執行,即每個應用程式在 Android 系統上的任何給定時間只能執行一個前臺程序)並例項化該元件所需的類。因此,元件在其所屬的應用程式的程序上執行。因此,與其他系統上的應用程式不同,Android 應用程式沒有單一入口點(沒有 main() 方法)。

由於系統在單獨的流程中執行每個應用程式,因此一個應用程式無法直接啟用其他應用程式的元件,但 Android 系統可以。因此,要啟動另一個應用程式的元件,一個應用程式必須向系統傳送一條訊息,指定啟動該元件的意圖,然後系統將啟動該元件。

上下文

android.content.Context 的例項提供與執行應用程式的 Android 系統的連線。需要 Context 的例項來訪問專案的資源以及有關應用程式環境的全域性資訊。

讓我們有一個易於理解的例子:假設你在酒店,你想要吃點東西。你打電話給客房服務,並要求他們帶給你東西或為你清理東西。現在想想這個酒店作為一個 Android 應用程式,你自己作為一項活動,然後客房服務人員就是你的背景,它可以讓你訪問酒店資源,如客房服務,食品等。

還有一個例子,你坐在一張桌子上的餐廳,每張桌子都有一個服務員,當你想訂購食品時,你要求服務員這樣做。然後服務員下訂單,食物送到你的桌子上。再次在這個例子中,餐廳是一個 Android 應用程式,表或客戶是應用程式元件,食品專案是你的應用程式資源,服務員是你的上下文,從而為你提供訪問食品等資源的方法。

啟用上述任何元件都需要上下文的例項。不僅僅是上述,而且幾乎每個系統資源:使用檢視建立 UI(稍後討論),建立系統服務例項,啟動新活動或服務 - 都需要上下文。

更詳細的描述寫在這裡