Android Framework 知識點
1. 四大組件
- Activity(活動)
- 是 Android 應用中最基本的組件,用于實現用戶界面。一個 Activity 通常對應一個屏幕的內容。
- 有自己的生命周期,包括
onCreate
、onStart
、onResume
、onPause
、onStop
、onDestroy
等方法,開發者需要了解這些方法的調用時機,以便正確管理 Activity 的狀態。 - 可以通過
Intent
進行啟動和切換,Intent
可分為顯式Intent
和隱式Intent
,分別用于明確指定啟動的組件和根據Intent
過濾器匹配合適的組件。
- Service(服務)
- 用于在后臺執行長時間運行的操作,不提供用戶界面。例如,音樂播放服務、文件下載服務等。
- 有兩種啟動方式:
startService
和bindService
。startService
啟動的服務會在后臺一直運行,直到調用stopService
或自身調用stopSelf
;bindService
啟動的服務與調用者綁定,調用者銷毀時服務也會銷毀。 - 可以使用
IntentService
,它是Service
的子類,內部使用HandlerThread
處理異步任務,任務完成后會自動停止。
- Broadcast Receiver(廣播接收器)
- 用于接收系統或應用發出的廣播消息。廣播可以是系統廣播(如開機廣播、電池電量變化廣播等),也可以是應用自定義廣播。
- 注冊方式有靜態注冊和動態注冊。靜態注冊在
AndroidManifest.xml
中聲明,應用未啟動時也能接收廣播;動態注冊在代碼中通過registerReceiver
方法注冊,需要在合適的時機調用unregisterReceiver
方法取消注冊。
- Content Provider(內容提供者)
- 用于在不同的應用之間共享數據。例如,聯系人數據、短信數據等都是通過內容提供者來共享的。
- 可以通過
ContentResolver
來訪問內容提供者提供的數據,ContentResolver
提供了query
、insert
、update
、delete
等方法來操作數據。
2. 系統服務
- Activity Manager Service(活動管理服務)
- 負責管理應用的 Activity 生命周期、任務棧和進程。它決定了哪個 Activity 應該顯示在前臺,如何處理 Activity 的啟動、暫停、恢復和銷毀等操作。
- Window Manager Service(窗口管理服務)
- 管理應用的窗口,包括窗口的創建、顯示、隱藏、大小調整和層級關系等。它還處理觸摸事件和鍵盤事件的分發。
- Package Manager Service(包管理服務)
- 負責應用的安裝、卸載、更新和查詢等操作。它維護了系統中所有應用的信息,包括應用的包名、版本號、權限等。
3. 資源管理
- 字符串資源:用于存儲應用中的文本信息,方便實現多語言支持。可以在
strings.xml
文件中定義字符串資源,然后在代碼或布局文件中通過@string/resource_name
引用。 - 布局資源:用于定義應用的界面布局。常見的布局文件有
LinearLayout
、RelativeLayout
、FrameLayout
等。可以在layout
目錄下創建布局文件,然后在 Activity 中通過setContentView(R.layout.layout_name)
方法設置布局。 - 圖片資源:用于存儲應用中的圖片文件,如圖標、背景圖等。可以根據不同的屏幕密度將圖片放在不同的
drawable
目錄下,系統會自動選擇合適的圖片顯示。
4. 圖形與動畫
- View 體系:是 Android 中所有界面元素的基類,包括
TextView
、Button
、ImageView
等。開發者可以自定義View
來實現特殊的界面效果,需要重寫onDraw
方法進行繪制。 - 動畫框架:提供了補間動畫(Tween Animation)、幀動畫(Frame Animation)和屬性動畫(Property Animation)三種動畫類型。補間動畫通過對 View 的平移、旋轉、縮放和透明度等屬性進行變換來實現動畫效果;幀動畫通過依次顯示一系列圖片來實現動畫效果;屬性動畫可以對任何對象的屬性進行動畫操作。
5. 網絡通信
- HttpURLConnection:是 Java 提供的一個簡單的 HTTP 通信類,在 Android 中也可以使用。可以通過它發送 HTTP 請求并獲取響應數據。
- OkHttp:是一個高效的 HTTP 客戶端庫,在 Android 開發中被廣泛使用。它支持 HTTP/2 和 SPDY 協議,提供了異步請求、攔截器、緩存等功能。
- Retrofit:是一個基于 OkHttp 的 RESTful API 客戶端庫,它可以將 HTTP 請求抽象成 Java 接口,通過注解的方式定義請求的方法和參數,大大簡化了網絡請求的代碼。
Android Framework 應用場景
1. 開發常規 Android 應用
- 無論是簡單的工具類應用,還是復雜的社交、電商應用,都需要使用 Android Framework 提供的四大組件來構建界面和實現功能。例如,社交應用中的聊天界面可以使用 Activity 實現,消息推送功能可以使用 Service 和 Broadcast Receiver 實現,用戶信息的存儲和共享可以使用 Content Provider 實現。
2. 系統定制與開發
- 設備廠商在定制 Android 系統時,需要深入了解 Android Framework。例如,定制系統的桌面 launcher、通知欄、設置菜單等,需要對 Framework 中的窗口管理、資源管理等模塊進行修改和擴展。
3. 開發系統級應用
- 如文件管理器、任務管理器、安全衛士等系統級應用,需要直接與 Android Framework 中的系統服務進行交互。例如,文件管理器需要使用存儲管理服務來訪問和操作文件系統,任務管理器需要使用 Activity Manager Service 來管理應用的進程和任務。
4. 跨應用數據共享與交互
- 當多個應用需要共享數據或進行交互時,就需要使用 Content Provider 和 Broadcast Receiver。例如,一個音樂播放器應用可以通過 Content Provider 共享音樂文件信息,其他應用可以通過 ContentResolver 訪問這些信息;同時,音樂播放器應用可以通過 Broadcast Receiver 接收其他應用發送的播放控制指令。