首先,Android四大組件分別為activity恢恼、service民傻、content provider、broadcast receiver场斑。
Reference:http://www.reibang.com/p/930dadb7a3cf
1漓踢、activity(窗口,通信漏隐,配置)
(1)一個Activity通常就是一個單獨的屏幕(窗口)喧半。
(2)Activity之間通過Intent進行通信。
(3)android應用中每一個Activity都必須要在AndroidManifest.xml配置文件中聲明青责,否則系統(tǒng)將不識別也不執(zhí)行該Activity挺据。
2、service(后臺爽柒,啟動吴菠,綁定)
(1)service用于在后臺完成用戶指定的操作。service分為兩種:
(a)started(啟動):當應用程序組件(如activity)調用startService()方法啟動服務時浩村,服務處于started狀態(tài)。
(b)bound(綁定):當應用程序組件調用bindService()方法綁定到服務時占哟,服務處于bound狀態(tài)心墅。
(2)startService()與bindService()區(qū)別:
(a)started service(啟動服務)是由其他組件調用startService()方法啟動的,這導致服務的onStartCommand()方法被調用榨乎。當服務是started狀態(tài)時怎燥,其生命周期與啟動它的組件無關,并且可以在后臺無限期運行蜜暑,即使啟動服務的組件已經(jīng)被銷毀铐姚。因此,服務需要在完成任務后調用stopSelf()方法停止肛捍,或者由其他組件調用stopService()方法停止隐绵。
(b)使用bindService()方法啟用服務,調用者與服務綁定在了一起拙毫,調用者一旦退出依许,服務也就終止,大有“不求同時生缀蹄,必須同時死”的特點峭跳。
(3)開發(fā)人員需要在應用程序配置文件中聲明全部的service膘婶,使用標簽。
(4)Service通常位于后臺運行蛀醉,它一般不需要與用戶交互悬襟,因此Service組件沒有圖形用戶界面。Service組件需要繼承Service基類拯刁。Service組件通常用于為其他組件提供后臺服務或監(jiān)控其他組件的運行狀態(tài)脊岳。
3、content provider(共享筛璧,ContentResoloever逸绎,URI)
(1)android平臺提供了Content Provider使一個應用程序的指定數(shù)據(jù)集提供給其他應用程序。其他應用可以通過ContentResolver類從該內容提供者中獲取或存入數(shù)據(jù)夭谤。
(2)只有需要在多個應用程序間共享數(shù)據(jù)是才需要內容提供者棺牧。例如,通訊錄數(shù)據(jù)被多個應用程序使用朗儒,且必須存儲在一個內容提供者中颊乘。它的好處是統(tǒng)一數(shù)據(jù)訪問方式。
(3)ContentProvider實現(xiàn)數(shù)據(jù)共享醉锄。ContentProvider用于保存和獲取數(shù)據(jù)乏悄,并使其對所有應用程序可見。這是不同應用程序間共享數(shù)據(jù)的唯一方式恳不,因為android沒有提供所有應用共同訪問的公共存儲區(qū)檩小。
(4)開發(fā)人員不會直接使用ContentProvider類的對象,大多數(shù)是通過ContentResolver對象實現(xiàn)對ContentProvider的操作烟勋。
(5)ContentProvider使用URI來唯一標識其數(shù)據(jù)集规求,這里的URI以content://作為前綴,表示該數(shù)據(jù)由ContentProvider來管理卵惦。
4阻肿、broadcast receiver
(1)你的應用可以使用它對外部事件進行過濾,只對感興趣的外部事件(如當電話呼入時沮尿,或者數(shù)據(jù)網(wǎng)絡可用時)進行接收并做出響應丛塌。廣播接收器沒有用戶界面。然而畜疾,它們可以啟動一個activity或serice來響應它們收到的信息赴邻,或者用NotificationManager來通知用戶。通知可以用很多種方式來吸引用戶的注意力庸疾,例如閃動背燈乍楚、震動、播放聲音等届慈。一般來說是在狀態(tài)欄上放一個持久的圖標徒溪,用戶可以打開它并獲取消息忿偷。
(2)廣播接收者的注冊有兩種方法,分別是程序動態(tài)注冊和AndroidManifest文件中進行靜態(tài)注冊臊泌。
(3)動態(tài)注冊廣播接收器特點是當用來注冊的Activity關掉后鲤桥,廣播也就失效了。靜態(tài)注冊無需擔憂廣播接收器是否被關閉渠概,只要設備是開啟狀態(tài)茶凳,廣播接收器也是打開著的。也就是說哪怕app本身未啟動播揪,該app訂閱的廣播在觸發(fā)時也會對它起作用贮喧。
1)4大組件的注冊
4大基本組件都需要注冊才能使用,每個Activity猪狈、service箱沦、Content Provider都需要在AndroidManifest文件中進行配置。
2)4大組件的激活
內容提供者的激活:當接收到ContentResolver發(fā)出的請求后雇庙,內容提供者被激活谓形。而其它三種組件activity、服務和廣播接收器被一種叫做intent的異步消息所激活疆前。
3)4大組件的關閉
內容提供者僅在響應ContentResolver提出請求的時候激活寒跳。而一個廣播接收器僅在響應廣播信息的時候激活。所以竹椒,沒有必要去顯式的關閉這些組件童太。Activity關閉:可以通過調用它的finish()方法來關閉一個activity。服務關閉:對于通過startService()方法啟動的服務要調用Context.stopService()方法關閉服務胸完,使用bindService()方法啟動的服務要調用Contex.unbindService()方法關閉服務康愤。
作者:駿駿的簡書
鏈接:http://www.reibang.com/p/930dadb7a3cf
來源:簡書
著作權歸作者所有。商業(yè)轉載請聯(lián)系作者獲得授權舶吗,非商業(yè)轉載請注明出處。