android四大元件及其功能(android四大元件是什麼)
Android四大元件分別為Activity、Service、Content Provider、Broadcast Receiver。
一、Activity元件
Activity在前文的文件和課程內容中已經做過介紹和講解,主要的作用就是一個Activity通常就是一個活動視窗,互動的載體。
- 一個Activity通常就是一個單獨的螢幕(視窗)。
- Activity之間通過Intent進行通訊。
- 每一個Activity都必須要在AndroidManifest.xml配置檔案中宣告,否則系統將不識別也不執行該Activity。
其他內容大家可以自行復習。
二、Service 服務
與Activity具備一個前臺顯示介面的活動元件不同,Android中有一個元件,沒有顯示畫面,一般不需要與使用者進行互動,該元件通常執行在後臺,稱之為Service服務元件。
如果想要實現自己自定義的Service,需要繼承自系統的Service基類,同樣也需要在清單檔案AndroidMainfest.xml檔案中進行宣告。關於Service,可以簡單總結如下:
- Service通常用於在後臺完成使用者指定的操作。
- Service也同樣有生命週期,可以進行宣告週期的管理。
- Service分為兩類:startService和bindService。
- 自定義實現的Service需要在清單配置檔案中進行宣告和註冊。
startService
在其他元件(比如Activity)中通過startService啟動一個後臺服務元件,服務啟動後,服務的生命週期和活動狀態和啟動該服務的元件不再有關係,即該服務的執行狀態變得獨立。
bindService
與startService方式啟動的服務不同,如果是通過bindService啟動某個服務元件,則意味著啟動服務的元件和服務進行了繫結,存在一種繫結關係。如果某個時刻,呼叫者(比如說Activity)觸法退出邏輯,關閉活動頁面,則通過bindService繫結的服務也會隨機停止。類似於“不求同年同月同日生生,但求同年同月同日生死”的悲壯。
三、ContentProvider內容提供者
ContentProvider 通常被直譯為內容提供者,元件名字很形象的詮釋了該元件的作用。在Android系統中,每個應用程式是執行在不同的程序中,程序間是相互獨立的。如果開發者開發的某一個應用程式,需要提供一些資料給其他應用程式,則可以通過ContentProvider將提供的資料進行暴露,其他應用程式通過ContentResolver從內容提供者中獲取相應的資料。對Content Provider相關的內容進行總結:
- A應用程式使用Content Provider提供共享資料,B應用程式通過Content Resolver按照規則獲取資料。
- 只有需要在多個應用程式間共享資料時才需要內容提供者。例如,通訊錄資料被多個應用程式使用,且必須儲存在一個內容提供者中。它的好處是統一資料訪問方式。
- ContentProvider實現資料共享。
- ContentProvider使用URI來唯一標識其資料集,這裡的URI以content://作為字首,表示該資料由ContentProvider來管理。
- 需要在清單配置檔案中進行註冊和宣告。
四、Boradcast Receiver廣播接受者
Android中的廣播的工作方式類似於前文講過的隱士Intent的工作方式,開發者可以指定接收一些事件,該事件既可以是自定義的,也可以是系統定義的。在程式執行時,可以根據指定的事件進行過濾和攔截,符合要求的事件,會被廣播接收器接收,並執行相應的業務邏輯。Android系統中廣播接收者的出現,實現了極大的模組的解耦。
對於廣播接收者,總結如下:
- 廣播接收者可以通過事件過濾和攔截,實現元件的通訊。
- 廣播接收者的註冊有兩種方式:動態註冊(程式碼中註冊)和靜態註冊(清單檔案註冊)。
- 動態註冊:Activity關閉後,失效。靜態註冊:不會失效。
轉自:知乎Davie