Android四大組件分別為activity、service、content provider、broadcast receiver。 一、android四大組件詳解1、activity (1)一個(gè)Activity通常就是一個(gè)單獨的屏幕(窗口)。 (2)Activity之間通過(guò)Intent進(jìn)行通信。 (3)android應用中每一個(gè)Activity都必須要在A(yíng)ndroidManifest.xml配置文件中聲明,否則系統將不識別也不執行該Activity。 2、service (1)service用于在后臺完成用戶(hù)指定的操作。service分為兩種: (a)started(啟動(dòng)):當應用程序組件(如activity)調用startService()方法啟動(dòng)服務(wù)時(shí),服務(wù)處于started狀態(tài)。 (b)bound(綁定):當應用程序組件調用bindService()方法綁定到服務(wù)時(shí),服務(wù)處于bound狀態(tài)。 (2)startService()與bindService()區別: (a)started service(啟動(dòng)服務(wù))是由其他組件調用startService()方法啟動(dòng)的,這導致服務(wù)的onStartCommand()方法被調用。當服務(wù)是started狀態(tài)時(shí),其生命周期與啟動(dòng)它的組件無(wú)關(guān),并且可以在后臺無(wú)限期運行,即使啟動(dòng)服務(wù)的組件已經(jīng)被銷(xiāo)毀。因此,服務(wù)需要在完成任務(wù)后調用stopSelf()方法停止,或者由其他組件調用stopService()方法停止。 (b)使用bindService()方法啟用服務(wù),調用者與服務(wù)綁定在了一起,調用者一旦退出,服務(wù)也就終止,大有“不求同時(shí)生,必須同時(shí)死”的特點(diǎn)。 (3)開(kāi)發(fā)人員需要在應用程序配置文件中聲明全部的service,使用<service></service>標簽。 (4)Service通常位于后臺運行,它一般不需要與用戶(hù)交互,因此Service組件沒(méi)有圖形用戶(hù)界面。Service組件需要繼承Service基類(lèi)。Service組件通常用于為其他組件提供后臺服務(wù)或監控其他組件的運行狀態(tài)。 3、content provider (1)android平臺提供了Content Provider使一個(gè)應用程序的指定數據集提供給其他應用程序。其他應用可以通過(guò)ContentResolver類(lèi)從該內容提供者中獲取或存入數據。 (2)只有需要在多個(gè)應用程序間共享數據是才需要內容提供者。例如,通訊錄數據被多個(gè)應用程序使用,且必須存儲在一個(gè)內容提供者中。它的好處是統一數據訪(fǎng)問(wèn)方式。 (3)ContentProvider實(shí)現數據共享。ContentProvider用于保存和獲取數據,并使其對所有應用程序可見(jiàn)。這是不同應用程序間共享數據的唯一方式,因為android沒(méi)有提供所有應用共同訪(fǎng)問(wèn)的公共存儲區。 (4)開(kāi)發(fā)人員不會(huì )直接使用ContentProvider類(lèi)的對象,大多數是通過(guò)ContentResolver對象實(shí)現對ContentProvider的操作。 (5)ContentProvider使用URI來(lái)唯一標識其數據集,這里的URI以content://作為前綴,表示該數據由ContentProvider來(lái)管理。 4、broadcast receiver (1)你的應用可以使用它對外部事件進(jìn)行過(guò)濾,只對感興趣的外部事件(如當電話(huà)呼入時(shí),或者數據網(wǎng)絡(luò )可用時(shí))進(jìn)行接收并做出響應。廣播接收器沒(méi)有用戶(hù)界面。然而,它們可以啟動(dòng)一個(gè)activity或serice來(lái)響應它們收到的信息,或者用NotificationManager來(lái)通知用戶(hù)。通知可以用很多種方式來(lái)吸引用戶(hù)的注意力,例如閃動(dòng)背燈、震動(dòng)、播放聲音等。一般來(lái)說(shuō)是在狀態(tài)欄上放一個(gè)持久的圖標,用戶(hù)可以打開(kāi)它并獲取消息。 (2)廣播接收者的注冊有兩種方法,分別是程序動(dòng)態(tài)注冊和AndroidManifest文件中進(jìn)行靜態(tài)注冊。 (3)動(dòng)態(tài)注冊廣播接收器特點(diǎn)是當用來(lái)注冊的Activity關(guān)掉后,廣播也就失效了。靜態(tài)注冊無(wú)需擔憂(yōu)廣播接收器是否被關(guān)閉,只要設備是開(kāi)啟狀態(tài),廣播接收器也是打開(kāi)著(zhù)的。也就是說(shuō)哪怕app本身未啟動(dòng),該app訂閱的廣播在觸發(fā)時(shí)也會(huì )對它起作用。 二、android四大組件總結: (1)4大組件的注冊 4大基本組件都需要注冊才能使用,每個(gè)Activity、service、Content Provider都需要在A(yíng)ndroidManifest文件中進(jìn)行配置。AndroidManifest文件中未進(jìn)行聲明的activity、服務(wù)以及內容提供者將不為系統所見(jiàn),從而也就不可用。而broadcast receiver廣播接收者的注冊分靜態(tài)注冊(在A(yíng)ndroidManifest文件中進(jìn)行配置)和通過(guò)代碼動(dòng)態(tài)創(chuàng )建并以調用Context.registerReceiver()的方式注冊至系統。需要注意的是在A(yíng)ndroidManifest文件中進(jìn)行配置的廣播接收者會(huì )隨系統的啟動(dòng)而一直處于活躍狀態(tài),只要接收到感興趣的廣播就會(huì )觸發(fā)(即使程序未運行)。 (2)4大組件的激活 內容提供者的激活:當接收到ContentResolver發(fā)出的請求后,內容提供者被激活。而其它三種組件activity、服務(wù)和廣播接收器被一種叫做intent的異步消息所激活。 (3)4大組件的關(guān)閉 內容提供者僅在響應ContentResolver提出請求的時(shí)候激活。而一個(gè)廣播接收器僅在響應廣播信息的時(shí)候激活。所以,沒(méi)有必要去顯式的關(guān)閉這些組件。Activity關(guān)閉:可以通過(guò)調用它的finish()方法來(lái)關(guān)閉一個(gè)activity。服務(wù)關(guān)閉:對于通過(guò)startService()方法啟動(dòng)的服務(wù)要調用Context.stopService()方法關(guān)閉服務(wù),使用bindService()方法啟動(dòng)的服務(wù)要調用Contex.unbindService()方法關(guān)閉服務(wù)。 (4)android中的任務(wù)(activity棧) (a)任務(wù)其實(shí)就是activity的棧,它由一個(gè)或多個(gè)Activity組成,共同完成一個(gè)完整的用戶(hù)體驗。棧底的是啟動(dòng)整個(gè)任務(wù)的Activity,棧頂的是當前運行的用戶(hù)可以交互的Activity,當一個(gè)activity啟動(dòng)另外一個(gè)的時(shí)候,新的activity就被壓入棧,并成為當前運行的activity。而前一個(gè)activity仍保持在棧之中。當用戶(hù)按下BACK鍵的時(shí)候,當前activity出棧,而前一個(gè)恢復為當前運行的activity。棧中保存的其實(shí)是對象,棧中的Activity永遠不會(huì )重排,只會(huì )壓入或彈出。 (b)任務(wù)中的所有activity是作為一個(gè)整體進(jìn)行移動(dòng)的。整個(gè)的任務(wù)(即activity棧)可以移到前臺,或退至后臺。 (c)Android系統是一個(gè)多任務(wù)(Multi-Task)的操作系統,可以在用手機聽(tīng)音樂(lè )的同時(shí),也執行其他多個(gè)程序。每多執行一個(gè)應用程序,就會(huì )多耗費一些系統內存,當同時(shí)執行的程序過(guò)多,或是關(guān)閉的程序沒(méi)有正確釋放掉內存,系統就會(huì )覺(jué)得越來(lái)越慢,甚至不穩定。為了解決這個(gè)問(wèn)題,Android引入了一個(gè)新的機制,即生命周期(Life Cycle)。 |
嘉興雷鳥(niǎo)是一家集企業(yè)軟件開(kāi)發(fā),WEB網(wǎng)站建設,移動(dòng)APP制作等綜合型的互聯(lián)網(wǎng)公司,為嘉興顧客提供一站式的企業(yè)軟件開(kāi)發(fā),安卓app開(kāi)發(fā),ios開(kāi)發(fā)服務(wù),同時(shí)為嘉興企業(yè)提供全面移動(dòng)互聯(lián)軟件技術(shù)解決方案,是嘉興知名的綜合型APP軟件外包開(kāi)發(fā)公司。根據前期調研方案和客戶(hù)實(shí)際需求,以專(zhuān)業(yè)獨到的設計理念、精益求精的技術(shù)精神、嚴格完善的品控系統,為嘉興每一位客戶(hù)提供專(zhuān)屬的移動(dòng)互聯(lián)軟件技術(shù)解決方案。經(jīng)過(guò)不斷積累,嘉興雷鳥(niǎo)陸續推出視頻直播APP、電商商城APP、P2P網(wǎng)貸APP、智能硬件APP開(kāi)發(fā)、移動(dòng)APP開(kāi)發(fā)、微信公眾平臺開(kāi)發(fā)、一元購APP、智慧社區服務(wù)APP、生活服務(wù)O2O系統APP等各類(lèi)APP產(chǎn)品,為嘉興各行企業(yè)向移動(dòng)互聯(lián)網(wǎng)轉型奠定了堅實(shí)基礎。在激烈的市場(chǎng)競爭中,嘉興雷鳥(niǎo)創(chuàng )造了嘉興軟件定制開(kāi)發(fā)行業(yè)的卓越口碑,是具有更高品質(zhì)的移動(dòng)互聯(lián)網(wǎng)軟件技術(shù)定制服務(wù)商。