android四大組件

android四大組件分別為activity、service、content provider则吟、broadcast receiver。

一锄蹂、android四大組件詳解

1氓仲、activity

(1)一個(gè)Activity通常就是一個(gè)單獨(dú)的屏幕(窗口)。
(2)Activity之間通過(guò)Intent進(jìn)行通信得糜。
(3)android應(yīng)用中每一個(gè)Activity都必須要在AndroidManifest.xml配置文件中聲明敬扛,否則系統(tǒng)將不識(shí)別也不執(zhí)行該Activity。

2朝抖、service

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

(a)started(啟動(dòng)):當(dāng)應(yīng)用程序組件(如activity)調(diào)用startService()方法啟動(dòng)服務(wù)時(shí),服務(wù)處于started狀態(tài)治宣。
(b)bound(綁定):當(dāng)應(yīng)用程序組件調(diào)用bindService()方法綁定到服務(wù)時(shí)急侥,服務(wù)處于bound狀態(tài)。

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

(a)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)它的組件無(wú)關(guān)豌拙,并且可以在后臺(tái)無(wú)限期運(yùn)行,即使啟動(dòng)服務(wù)的組件已經(jīng)被銷(xiāo)毀题暖。因此按傅,服務(wù)需要在完成任務(wù)后調(diào)用stopSelf()方法停止,或者由其他組件調(diào)用stopService()方法停止胧卤。
(b)使用bindService()方法啟用服務(wù)唯绍,調(diào)用者與服務(wù)綁定在了一起,調(diào)用者一旦退出枝誊,服務(wù)也就終止况芒,大有“不求同時(shí)生,必須同時(shí)死”的特點(diǎn)叶撒。

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

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

3腺阳、content provider

(1)android平臺(tái)提供了Content Provider使一個(gè)應(yīng)用程序的指定數(shù)據(jù)集提供給其他應(yīng)用程序。其他應(yīng)用可以通過(guò)ContentResolver類(lèi)從該內(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ù)訪問(wèn)方式。
(3)ContentProvider實(shí)現(xiàn)數(shù)據(jù)共享魔市。ContentProvider用于保存和獲取數(shù)據(jù)主届,并使其對(duì)所有應(yīng)用程序可見(jiàn)。這是不同應(yīng)用程序間共享數(shù)據(jù)的唯一方式待德,因?yàn)閍ndroid沒(méi)有提供所有應(yīng)用共同訪問(wèn)的公共存儲(chǔ)區(qū)君丁。
(4)開(kāi)發(fā)人員不會(huì)直接使用ContentProvider類(lèi)的對(duì)象,大多數(shù)是通過(guò)ContentResolver對(duì)象實(shí)現(xiàn)對(duì)ContentProvider的操作将宪。
(5)ContentProvider使用URI來(lái)唯一標(biāo)識(shí)其數(shù)據(jù)集绘闷,這里的URI以content://作為前綴,表示該數(shù)據(jù)由ContentProvider來(lái)管理较坛。

4印蔗、broadcast receiver

(1)你的應(yīng)用可以使用它對(duì)外部事件進(jìn)行過(guò)濾,只對(duì)感興趣的外部事件(如當(dāng)電話呼入時(shí)丑勤,或者數(shù)據(jù)網(wǎng)絡(luò)可用時(shí))進(jìn)行接收并做出響應(yīng)华嘹。廣播接收器沒(méi)有用戶(hù)界面。然而法竞,它們可以啟動(dòng)一個(gè)activity或serice來(lái)響應(yīng)它們收到的信息耙厚,或者用NotificationManager來(lái)通知用戶(hù)。通知可以用很多種方式來(lái)吸引用戶(hù)的注意力岔霸,例如閃動(dòng)背燈薛躬、震動(dòng)、播放聲音等呆细。一般來(lái)說(shuō)是在狀態(tài)欄上放一個(gè)持久的圖標(biāo)型宝,用戶(hù)可以打開(kāi)它并獲取消息。
(2)廣播接收者的注冊(cè)有兩種方法絮爷,分別是程序動(dòng)態(tài)注冊(cè)和AndroidManifest文件中進(jìn)行靜態(tài)注冊(cè)诡曙。
(3)動(dòng)態(tài)注冊(cè)廣播接收器特點(diǎn)是當(dāng)用來(lái)注冊(cè)的Activity關(guān)掉后,廣播也就失效了略水。靜態(tài)注冊(cè)無(wú)需擔(dān)憂廣播接收器是否被關(guān)閉价卤,只要設(shè)備是開(kāi)啟狀態(tài),廣播接收器也是打開(kāi)著的渊涝。也就是說(shuō)哪怕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)所見(jiàn),從而也就不可用捷绒。而broadcast receiver廣播接收者的注冊(cè)分靜態(tài)注冊(cè)(在AndroidManifest文件中進(jìn)行配置)和通過(guò)代碼動(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í)候激活葫掉。所以些举,沒(méi)有必要去顯式的關(guān)閉這些組件。Activity關(guān)閉:可以通過(guò)調(diào)用它的finish()方法來(lái)關(guān)閉一個(gè)activity俭厚。服務(wù)關(guān)閉:對(duì)于通過(guò)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è)完整的用戶(hù)體驗(yàn)资铡。棧底的是啟動(dòng)整個(gè)任務(wù)的Activity电禀,棧頂?shù)氖钱?dāng)前運(yùn)行的用戶(hù)可以交互的Activity,當(dāng)一個(gè)activity啟動(dòng)另外一個(gè)的時(shí)候笤休,新的activity就被壓入棧尖飞,并成為當(dāng)前運(yùn)行的activity。而前一個(gè)activity仍保持在棧之中店雅。當(dāng)用戶(hù)按下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ī)聽(tīng)音樂(lè)的同時(shí)纺酸,也執(zhí)行其他多個(gè)程序。每多執(zhí)行一個(gè)應(yīng)用程序址否,就會(huì)多耗費(fèi)一些系統(tǒng)內(nèi)存餐蔬,當(dāng)同時(shí)執(zhí)行的程序過(guò)多,或是關(guān)閉的程序沒(méi)有正確釋放掉內(nèi)存佑附,系統(tǒng)就會(huì)覺(jué)得越來(lái)越慢樊诺,甚至不穩(wěn)定。為了解決這個(gè)問(wèn)題帮匾,Android引入了一個(gè)新的機(jī)制啄骇,即生命周期(Life Cycle)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末瘟斜,一起剝皮案震驚了整個(gè)濱河市缸夹,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌螺句,老刑警劉巖虽惭,帶你破解...
    沈念sama閱讀 219,539評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異蛇尚,居然都是意外死亡芽唇,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門(mén)取劫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)匆笤,“玉大人,你說(shuō)我怎么就攤上這事谱邪∨谂酰” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,871評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵惦银,是天一觀的道長(zhǎng)咆课。 經(jīng)常有香客問(wèn)我,道長(zhǎng)扯俱,這世上最難降的妖魔是什么书蚪? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,963評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮迅栅,結(jié)果婚禮上殊校,老公的妹妹穿的比我還像新娘。我一直安慰自己读存,他們只是感情好为流,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布窜醉。 她就那樣靜靜地躺著,像睡著了一般艺谆。 火紅的嫁衣襯著肌膚如雪榨惰。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,763評(píng)論 1 307
  • 那天静汤,我揣著相機(jī)與錄音琅催,去河邊找鬼。 笑死虫给,一個(gè)胖子當(dāng)著我的面吹牛藤抡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播抹估,決...
    沈念sama閱讀 40,468評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼缠黍,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了药蜻?” 一聲冷哼從身側(cè)響起瓷式,我...
    開(kāi)封第一講書(shū)人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎语泽,沒(méi)想到半個(gè)月后贸典,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,850評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡踱卵,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評(píng)論 3 338
  • 正文 我和宋清朗相戀三年廊驼,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片惋砂。...
    茶點(diǎn)故事閱讀 40,144評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡妒挎,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出西饵,到底是詐尸還是另有隱情酝掩,我是刑警寧澤,帶...
    沈念sama閱讀 35,823評(píng)論 5 346
  • 正文 年R本政府宣布罗标,位于F島的核電站庸队,受9級(jí)特大地震影響积蜻,放射性物質(zhì)發(fā)生泄漏闯割。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評(píng)論 3 331
  • 文/蒙蒙 一竿拆、第九天 我趴在偏房一處隱蔽的房頂上張望宙拉。 院中可真熱鬧,春花似錦丙笋、人聲如沸谢澈。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,026評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)锥忿。三九已至牛郑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間敬鬓,已是汗流浹背淹朋。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,150評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留钉答,地道東北人础芍。 一個(gè)月前我還...
    沈念sama閱讀 48,415評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像数尿,于是被迫代替她去往敵國(guó)和親仑性。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容