安卓四大組件

來源:互聯網
上載者:User

標籤:

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

一、android四大組件詳解

1activity

(1)一個Activity通常就是一個單獨的螢幕(視窗)。

(2)Activity之間通過Intent進行通訊。

(3)android應用中每一個Activity都必須要在AndroidManifest.xml設定檔中聲明,否則系統將不識別也不執行該Activity。

2service

(1)service用於在後台完成使用者指定的操作。service分為兩種:

(a)started(啟動):當應用程式組件(如activity)調用startService()方法啟動服務時,服務處於started狀態。

(b)bound(綁定):當應用程式組件調用bindService()方法綁定到服務時,服務處於bound狀態。

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

(a)started service(啟動服務)是由其他組件調用startService()方法啟動的,這導致服務的onStartCommand()方法被調用。當服務是started狀態時,其生命週期與啟動它的組件無關,並且可以在後台無限期運行,即使啟動服務的組件已經被銷毀。因此,服務需要在完成任務後調用stopSelf()方法停止,或者由其他組件調用stopService()方法停止。

(b)使用bindService()方法啟用服務,調用者與服務綁定在了一起,調用者一旦退出,服務也就終止,大有“不求同時生,必須同時死”的特點。

(3)開發人員需要在應用程式設定檔中聲明全部的service,使用<service></service>標籤。

(4)Service通常位於後台運行,它一般不需要與使用者互動,因此Service組件沒有圖形化使用者介面。Service組件需要繼承Service基類。Service組件通常用於為其他組件提供後台服務或監控其他組件的運行狀態。

3content provider

(1)android平台提供了Content Provider使一個應用程式的指定資料集提供給其他應用程式。其他應用可以通過ContentResolver類從該內容提供者中擷取或存入資料。

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

(3)ContentProvider實現資料共用。ContentProvider用於儲存和擷取資料,並使其對所有應用程式可見。這是不同應用程式間共用資料的唯一方式,因為android沒有提供所有應用共同訪問的公用儲存區。

(4)開發人員不會直接使用ContentProvider類的對象,大多數是通過ContentResolver對象實現對ContentProvider的操作。

(5)ContentProvider使用URI來唯一標識其資料集,這裡的URI以content://作為首碼,表示該資料由ContentProvider來管理。

4broadcast receiver

(1)你的應用可以使用它對外來事件進行過濾,只對感興趣的外來事件(如當電話呼入時,或者資料網路可用時)進行接收並做出響應。廣播接收器沒有使用者介面。然而,它們可以啟動一個activity或serice來響應它們收到的資訊,或者用NotificationManager來通知使用者。通知可以用很多種方式來吸引使用者的注意力,例如閃動背燈、震動、播放聲音等。一般來說是在狀態列上放一個持久的表徵圖,使用者可以開啟它並擷取訊息。

(2)廣播接收者的註冊有兩種方法,分別是程式動態註冊和AndroidManifest檔案中進行靜態註冊。

(3)動態註冊廣播接收器特點是當用來註冊的Activity關掉後,廣播也就失效了。靜態註冊無需擔憂廣播接收器是否被關閉,只要裝置是開啟狀態,廣播接收器也是開啟著的。也就是說哪怕app本身未啟動,該app訂閱的廣播在觸發時也會對它起作用。

二、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)

安卓四大組件

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.