溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

android的四大組件分別是什么

發(fā)布時(shí)間:2022-11-25 09:09:56 來源:億速云 閱讀:244 作者:iii 欄目:互聯(lián)網(wǎng)科技

這篇“android的四大組件分別是什么”文章的知識(shí)點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“android的四大組件分別是什么”文章吧。

四大組件:1、Activity組件,它一個(gè)單獨(dú)的窗口,程序流程都必須在【Activity】中運(yùn)行,所有它是最基本的模塊。2、service組件,用于在后臺(tái)完成用戶指定的操作。3、content provider組件,會(huì)為所有的應(yīng)用準(zhǔn)備一個(gè)內(nèi)容窗口,并且保留數(shù)據(jù)庫、文件。4、broadcast receiver組件,是程序之間傳遞信息時(shí)的一種機(jī)制,作用就是接收或者發(fā)送通知。

Android四大組件分別為activity、service、content provider、broadcast receiver。

一、android四大組件詳解

1、activity

Activity可以看成是安卓系統(tǒng)的根本,在這個(gè)根本上才可以進(jìn)行其他的工作,因?yàn)樵诎沧肯到y(tǒng)里運(yùn)行的所有的程序,它的流程都必須在【Activity】中運(yùn)行,所有他是最基本的模塊。它的作用是一個(gè)框架或頁面,每個(gè)程序會(huì)有多個(gè)【Activity】組成。

(1)一個(gè)Activity通常就是一個(gè)單獨(dú)的屏幕(窗口)。

(2)Activity之間通過Intent進(jìn)行通信。

(3)android應(yīng)用中每一個(gè)Activity都必須要在AndroidManifest.xml配置文件中聲明,否則系統(tǒng)將不識(shí)別也不執(zhí)行該Activity。

2、service

Service是安卓里非常很重要的組件,它的地位和優(yōu)先級(jí)別是與活動(dòng)相似的,不過Service不能夠自己運(yùn)行,它只能在安卓的后臺(tái)運(yùn)行。它的作用就是與安卓的其他逐漸進(jìn)行交互,舉個(gè)簡(jiǎn)單例子:當(dāng)我們打開手機(jī)上音樂播放器并將它放到后臺(tái),此時(shí)播放的音樂就是由Service在負(fù)責(zé)控制。

1)service用于在后臺(tái)完成用戶指定的操作。service分為兩種:

  • started(啟動(dòng)):當(dāng)應(yīng)用程序組件(如activity)調(diào)用startService()方法啟動(dòng)服務(wù)時(shí),服務(wù)處于started狀態(tài)。

  • bound(綁定):當(dāng)應(yīng)用程序組件調(diào)用bindService()方法綁定到服務(wù)時(shí),服務(wù)處于bound狀態(tài)。

2)startService()與bindService()區(qū)別:

  • started service(啟動(dòng)服務(wù))是由其他組件調(diào)用startService()方法啟動(dòng)的,這導(dǎo)致服務(wù)的onStartCommand()方法被調(diào)用。當(dāng)服務(wù)是started狀態(tài)時(shí),其生命周期與啟動(dòng)它的組件無關(guān),并且可以在后臺(tái)無限期運(yùn)行,即使啟動(dòng)服務(wù)的組件已經(jīng)被銷毀。因此,服務(wù)需要在完成任務(wù)后調(diào)用stopSelf()方法停止,或者由其他組件調(diào)用stopService()方法停止。

  • 使用bindService()方法啟用服務(wù),調(diào)用者與服務(wù)綁定在了一起,調(diào)用者一旦退出,服務(wù)也就終止,大有“不求同時(shí)生,必須同時(shí)死”的特點(diǎn)。

3)開發(fā)人員需要在應(yīng)用程序配置文件中聲明全部的service,使用<service></service>標(biāo)簽。

4)Service通常位于后臺(tái)運(yùn)行,它一般不需要與用戶交互,因此Service組件沒有圖形用戶界面。Service組件需要繼承Service基類。Service組件通常用于為其他組件提供后臺(tái)服務(wù)或監(jiān)控其他組件的運(yùn)行狀態(tài)。

3、content provider(內(nèi)容提供商)

內(nèi)容提供商這個(gè)組件是專門為第三方應(yīng)用而設(shè)計(jì)的,它非常的靈活,而且相當(dāng)重要,它會(huì)為所有的應(yīng)用準(zhǔn)備一個(gè)內(nèi)容窗口,并且保留數(shù)據(jù)庫、文件,作用就是我們?cè)谑褂眠@些第三方軟件的時(shí)候,可以有效的訪問,并且保護(hù)里面的數(shù)據(jù)。

1)android平臺(tái)提供了Content Provider使一個(gè)應(yīng)用程序的指定數(shù)據(jù)集提供給其他應(yīng)用程序。其他應(yīng)用可以通過ContentResolver類從該內(nèi)容提供者中獲取或存入數(shù)據(jù)。

2)只有需要在多個(gè)應(yīng)用程序間共享數(shù)據(jù)是才需要內(nèi)容提供者。例如,通訊錄數(shù)據(jù)被多個(gè)應(yīng)用程序使用,且必須存儲(chǔ)在一個(gè)內(nèi)容提供者中。它的好處是統(tǒng)一數(shù)據(jù)訪問方式。

3)ContentProvider實(shí)現(xiàn)數(shù)據(jù)共享。ContentProvider用于保存和獲取數(shù)據(jù),并使其對(duì)所有應(yīng)用程序可見。這是不同應(yīng)用程序間共享數(shù)據(jù)的唯一方式,因?yàn)閍ndroid沒有提供所有應(yīng)用共同訪問的公共存儲(chǔ)區(qū)。

4)開發(fā)人員不會(huì)直接使用ContentProvider類的對(duì)象,大多數(shù)是通過ContentResolver對(duì)象實(shí)現(xiàn)對(duì)ContentProvider的操作。

5)ContentProvider使用URI來唯一標(biāo)識(shí)其數(shù)據(jù)集,這里的URI以content://作為前綴,表示該數(shù)據(jù)由ContentProvider來管理。

4、broadcast receiver(廣播接收器)

在安卓系統(tǒng)中,廣播接收器并不是直接就可以看到的,它是程序之間傳遞信息時(shí)的一種機(jī)制,作用就是接收或者發(fā)送通知。通俗的來說廣播接收器更像是一種傳遞組件,它能夠?qū)⑿畔⒔邮?,甚至還可以對(duì)它進(jìn)行過濾然后進(jìn)行響應(yīng)。

1)你的應(yīng)用可以使用它對(duì)外部事件進(jìn)行過濾,只對(duì)感興趣的外部事件(如當(dāng)電話呼入時(shí),或者數(shù)據(jù)網(wǎng)絡(luò)可用時(shí))進(jìn)行接收并做出響應(yīng)。廣播接收器沒有用戶界面。然而,它們可以啟動(dòng)一個(gè)activity或serice來響應(yīng)它們收到的信息,或者用NotificationManager來通知用戶。通知可以用很多種方式來吸引用戶的注意力,例如閃動(dòng)背燈、震動(dòng)、播放聲音等。一般來說是在狀態(tài)欄上放一個(gè)持久的圖標(biāo),用戶可以打開它并獲取消息。

2)廣播接收者的注冊(cè)有兩種方法,分別是程序動(dòng)態(tài)注冊(cè)和AndroidManifest文件中進(jìn)行靜態(tài)注冊(cè)。

3)動(dòng)態(tài)注冊(cè)廣播接收器特點(diǎn)是當(dāng)用來注冊(cè)的Activity關(guān)掉后,廣播也就失效了。靜態(tài)注冊(cè)無需擔(dān)憂廣播接收器是否被關(guān)閉,只要設(shè)備是開啟狀態(tài),廣播接收器也是打開著的。也就是說哪怕app本身未啟動(dòng),該app訂閱的廣播在觸發(fā)時(shí)也會(huì)對(duì)它起作用。

二、android四大組件總結(jié):

1、4大組件的注冊(cè)

4大基本組件都需要注冊(cè)才能使用,每個(gè)Activity、service、Content Provider都需要在AndroidManifest文件中進(jìn)行配置。AndroidManifest文件中未進(jìn)行聲明的activity、服務(wù)以及內(nèi)容提供者將不為系統(tǒng)所見,從而也就不可用。而broadcast receiver廣播接收者的注冊(cè)分靜態(tài)注冊(cè)(在AndroidManifest文件中進(jìn)行配置)和通過代碼動(dòng)態(tài)創(chuàng)建并以調(diào)用Context.registerReceiver()的方式注冊(cè)至系統(tǒng)。需要注意的是在AndroidManifest文件中進(jìn)行配置的廣播接收者會(huì)隨系統(tǒng)的啟動(dòng)而一直處于活躍狀態(tài),只要接收到感興趣的廣播就會(huì)觸發(fā)(即使程序未運(yùn)行)。

2、4大組件的激活

內(nèi)容提供者的激活:當(dāng)接收到ContentResolver發(fā)出的請(qǐng)求后,內(nèi)容提供者被激活。而其它三種組件activity、服務(wù)和廣播接收器被一種叫做intent的異步消息所激活。

3、4大組件的關(guān)閉

內(nèi)容提供者僅在響應(yīng)ContentResolver提出請(qǐng)求的時(shí)候激活。而一個(gè)廣播接收器僅在響應(yīng)廣播信息的時(shí)候激活。所以,沒有必要去顯式的關(guān)閉這些組件。Activity關(guān)閉:可以通過調(diào)用它的finish()方法來關(guān)閉一個(gè)activity。服務(wù)關(guān)閉:對(duì)于通過startService()方法啟動(dòng)的服務(wù)要調(diào)用Context.stopService()方法關(guān)閉服務(wù),使用bindService()方法啟動(dòng)的服務(wù)要調(diào)用Contex.unbindService()方法關(guān)閉服務(wù)。

4、android中的任務(wù)(activity棧)

a)任務(wù)其實(shí)就是activity的棧,它由一個(gè)或多個(gè)Activity組成,共同完成一個(gè)完整的用戶體驗(yàn)。棧底的是啟動(dòng)整個(gè)任務(wù)的Activity,棧頂?shù)氖钱?dāng)前運(yùn)行的用戶可以交互的Activity,當(dāng)一個(gè)activity啟動(dòng)另外一個(gè)的時(shí)候,新的activity就被壓入棧,并成為當(dāng)前運(yùn)行的activity。而前一個(gè)activity仍保持在棧之中。當(dāng)用戶按下BACK鍵的時(shí)候,當(dāng)前activity出棧,而前一個(gè)恢復(fù)為當(dāng)前運(yùn)行的activity。棧中保存的其實(shí)是對(duì)象,棧中的Activity永遠(yuǎn)不會(huì)重排,只會(huì)壓入或彈出。

b)任務(wù)中的所有activity是作為一個(gè)整體進(jìn)行移動(dòng)的。整個(gè)的任務(wù)(即activity棧)可以移到前臺(tái),或退至后臺(tái)。

c)Android系統(tǒng)是一個(gè)多任務(wù)(Multi-Task)的操作系統(tǒng),可以在用手機(jī)聽音樂的同時(shí),也執(zhí)行其他多個(gè)程序。每多執(zhí)行一個(gè)應(yīng)用程序,就會(huì)多耗費(fèi)一些系統(tǒng)內(nèi)存,當(dāng)同時(shí)執(zhí)行的程序過多,或是關(guān)閉的程序沒有正確釋放掉內(nèi)存,系統(tǒng)就會(huì)覺得越來越慢,甚至不穩(wěn)定。為了解決這個(gè)問題,Android引入了一個(gè)新的機(jī)制,即生命周期(Life Cycle)。

以上就是關(guān)于“android的四大組件分別是什么”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對(duì)大家有幫助,若想了解更多相關(guān)的知識(shí)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI