了解android四大元件

2021-07-22 20:05:34 字數 4458 閱讀 8962

源於

android四大元件分別為activity、service、content provider、broadcast receiver。

一、android四大元件詳解

1、activity(活動)

1)乙個

activity

通常就是乙個

單獨的螢幕(視窗)。(

2)activity

之間通過intent進行通訊。(

3)android

應用中每乙個

activity

都必須要

在androidmanifest.xml配置檔案中宣告

,否則系統將不識別也不執行該

activity

2、service(服務)

1)service

用於在後台

完成使用者指定的操作。

service

分為兩種:(a

)started

(啟動)

:當應用程式元件(如

activity

)呼叫start

service()

方法啟動服務時,服務處於

started

狀態。(b)

bound

(繫結)

:當應用程式元件呼叫

bind

service()

方法繫結到服務時,服務處於

bound

狀態。(2)startservice()

與bindservice()區別:

(a)started service

(啟動服務)是由

其他元件呼叫startservice()方法啟動的

,這導致

服務的onstartcommand()方法被呼叫

。當服務是

started

狀態時,

其生命週期與啟動它的元件無關,並且可以在後台無限期執行

,即使啟動服務的元件已經被銷毀。因此,

服務需要在完成任務後呼叫stopself()方法停止

,或者由其他元件呼叫stopservice()方法停止

。(b)

使用bind

service()

方法啟用服務,呼叫者與服務繫結在了一起,呼叫者一旦退出,服務也就終止,大有「不求同時生,

必須同時死

」的特點。

(3)開發人員

需要在應用程式配置檔案中宣告全部的service

,使用標籤。

(4)service

通常位於後台執行

,它一般不需要與使用者互動,因此

service

元件沒有圖形使用者介面。

service元件需要繼承service基類

。service

元件通常用於為其他元件提供後台服務或監控其他元件的執行狀態。

3、content provider(內容提器)

1)android

平台提供了

content provider

使乙個應用程式的指定資料集提供給其他應用程式。其他應用可以

通過contentresolver

類從該內容提供者中獲取或存入資料。(

2)只有需要在

多個應用程式間共享資料

是才需要內容提供者。例如,通訊錄資料被多個應用程式使用,且必須儲存在乙個內容提供者中。它的好處是統一資料訪問方式。(3

)contentprovider

實現資料共享

。contentprovider

用於儲存和獲取資料,並使其對所有應用程式可見。這是不同應用程式間共享資料的唯一方式,因為

android

沒有提供所有應用共同訪問的公共儲存區。(4

)開發人員不會直接使用

contentprovider

類的物件,大多數是

通過contentresolver物件實現對contentprovider的操作。(

5)contentprovider

使用uri來唯一標識其資料集

,這裡的

uri以content://作為字首,表示該資料由contentprovider來管理。

4、broadcast receiver(廣播接收器)

1)你的應用可以使用它對外部事件進行過濾,只對感興趣的外部事件

(如當**呼入時,或者資料網路可用時

)進行接收並做出響應。廣播接收器沒有使用者介面。然而,它們

可以啟動乙個activity或serice來響應它們收到的資訊

,或者用notificationmanager來通知使用者(2

)廣播接收者的註冊有兩種方法,分別是程式

動態註冊

和androidmanifest

檔案中進行

靜態註冊。(

3)動態註冊

廣播接收器特點是

當用來註冊的activity關掉後,廣播也就失效了

。靜態註冊

無需憂廣播接收器是否被關閉,只要裝置是開啟狀態,廣播接收器也是開啟著的。也就是說

二、android四大元件總結:

(1)

4大元件的

註冊4

大基本元件都需要註冊才能使用,每個

activity

、service

、content provider

都需要在androidmanifest檔案中進行配置

。androidmanifest

檔案中未進行宣告的

activity

、服務以及內容提供者將不為系統所見,從而也就不可用。而

broadcast receiver廣播接收者的註冊分靜態註冊(在androidmanifest檔案中進行配置)和通過**動態建立並以呼叫context.registerreceiver()的方式註冊至系統

。需要注意的是

在androidmanifest檔案中進行配置的廣播接收者會隨系統的啟動而一直處於活躍狀態,只要接收到感興趣的廣播就會觸發(即使程式未執行)

(2)

4大元件的

啟用

內容提供者的啟用:

當接收到

contentresolver

發出的請求後,內容提供者被啟用。而

其它三種元件

activity

、服務和廣播接收器被一種叫做

intent

的非同步訊息所啟用

(3)

4大元件的

關閉

內容提供者僅在響應

contentresolver

提出請求的時候啟用。而乙個廣播接收器僅在響應廣播資訊的時候啟用。所以,沒有必要去顯式的關閉這些元件。

activity關閉

:可以通過呼叫它的finish()方法來關閉乙個activity

。服務關閉

:對於通過startservice()方法啟動的服務要呼叫context.stopservice()方法關閉服務

,使用bindservice()方法啟動的服務要呼叫contex.unbindservice()方法關閉服務

(4)

android

中的任務(activity棧)

a)任務其實就是

activity

的棧,它

由乙個或多個activity組成,共同完成乙個完整的使用者體驗

。棧底的是啟動整個任務的activity,棧頂的是當前執行的使用者可以互動的activity

,當乙個

activity

啟動另外乙個的時候,新的

activity

就被壓入棧,並成為當前執行的

activity

。而前乙個

activity

仍保持在棧之中。當使用者按下

back

鍵的時候,當前

activity

出棧,而前乙個恢復為當前執行的

activity

。棧中儲存的其實是物件,棧中的

activity

永遠不會重排,只會壓入或彈出。

(b)任務中的所有activity是作為乙個整體進行移動的。整個的任務(即activity棧)可以移到前台,或退至後台。

(c)android系統是乙個

多工(multi-task)的作業系統

,可以在用手機聽**的同時,也執行其他多個程式。每多執行乙個應用程式,就會多耗費一些系統記憶體,當同時執行的程式過多,或是關閉的程式沒有正確釋放掉記憶體,系統就會覺得越來越慢,甚至不穩定。為了解決這個問題,android引入了乙個新的機制,即

生命週期(life cycle)

android 四大元件

1.activity 2.service 3.contentprovider 應用中的資料,對外進行共享,其它應用可以通過內容提供者,可以訪問到你應用中的資料,對資料進行增刪改查 1 對不同的資料格式,統一了檔案格式和資料訪問api 2 內容提供者要繼承contentprovider類 3 在清單檔...

Android 四大元件

activity intent receiver service content provider 並不是每乙個android應用程式都需要這四種構造塊,這不是必須的。當我們明確了我們的應用需要哪些構造塊後,我們就需要在androidmanifest.xml中登記這些構造塊的清單。這個配置檔案用於定...

android四大元件

android 四大元件 1.contentprovider contentprovider是什麼 android中的乙個應用元件 作為乙個引用元件的表現是生命週期方法 android中內容提供者 一般是內部儲存中的資料 contentprovider 物件的應用場合 例如 3.contentpri...