91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

android的四大組件分別是什么

發布時間:2022-11-25 09:09:56 來源:億速云 閱讀:244 作者:iii 欄目:互聯網科技

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

四大組件:1、Activity組件,它一個單獨的窗口,程序流程都必須在【Activity】中運行,所有它是最基本的模塊。2、service組件,用于在后臺完成用戶指定的操作。3、content provider組件,會為所有的應用準備一個內容窗口,并且保留數據庫、文件。4、broadcast receiver組件,是程序之間傳遞信息時的一種機制,作用就是接收或者發送通知。

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

一、android四大組件詳解

1、activity

Activity可以看成是安卓系統的根本,在這個根本上才可以進行其他的工作,因為在安卓系統里運行的所有的程序,它的流程都必須在【Activity】中運行,所有他是最基本的模塊。它的作用是一個框架或頁面,每個程序會有多個【Activity】組成。

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

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

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

2、service

Service是安卓里非常很重要的組件,它的地位和優先級別是與活動相似的,不過Service不能夠自己運行,它只能在安卓的后臺運行。它的作用就是與安卓的其他逐漸進行交互,舉個簡單例子:當我們打開手機上音樂播放器并將它放到后臺,此時播放的音樂就是由Service在負責控制。

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

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

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

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

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

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

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

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

3、content provider(內容提供商)

內容提供商這個組件是專門為第三方應用而設計的,它非常的靈活,而且相當重要,它會為所有的應用準備一個內容窗口,并且保留數據庫、文件,作用就是我們在使用這些第三方軟件的時候,可以有效的訪問,并且保護里面的數據。

1)android平臺提供了Content Provider使一個應用程序的指定數據集提供給其他應用程序。其他應用可以通過ContentResolver類從該內容提供者中獲取或存入數據。

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

3)ContentProvider實現數據共享。ContentProvider用于保存和獲取數據,并使其對所有應用程序可見。這是不同應用程序間共享數據的唯一方式,因為android沒有提供所有應用共同訪問的公共存儲區。

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

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

4、broadcast 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)。

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

隆德县| 磴口县| 郯城县| 库伦旗| 五大连池市| 闽侯县| 井陉县| 马山县| 麦盖提县| 开平市| 涿州市| 津市市| 隆德县| 邯郸市| 睢宁县| 大悟县| 沾益县| 泽库县| 台东县| 沧州市| 闻喜县| 文水县| 麦盖提县| 页游| 麟游县| 景泰县| 安仁县| 容城县| 英吉沙县| 新源县| 栾川县| 怀仁县| 晴隆县| 那坡县| 土默特左旗| 横山县| 仪征市| 石嘴山市| 武夷山市| 旬阳县| 呈贡县|