android 组件(activity,service,content provider,broadcast receiver,intent)详解
生活随笔
收集整理的這篇文章主要介紹了
android 组件(activity,service,content provider,broadcast receiver,intent)详解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Android應用程序由若干個不同類型的組件組合而成,每一個組件具有其特定的安全保護設計方式,它們的安全直接影響到應用程序的安全。Android應用程序組件的主要類型有:活動(Activity),服務(Service),廣播接收者(Broadcast Receiver),內容提供者(Content Provider),意圖(Intent),小組件(Widget),通知(Notification)等。其中最重要的是前5種。在決定使用以上哪些組件來構建Android應用程序時,應該將它們列在AndroidManifest.xml文件中,這個文件用于聲明應用程序組件以及它們的特性和要求。下面先分別對活動(Activity),服務(Service),內容提供者(Content Provider),廣播接收者(Broadcast Receiver)和意圖(Intent)5種組件加以介紹。
活動(Activity)
Activity是應用程序的表示層,為用戶展示界面,提供了可視的界面,與用戶進行交互;一個Activity通常展現為一個可視化的用戶界面,比如一個手機的聯系人功能可能包含一個顯示聯系人列表的Activity,一個可編輯聯系人信息的Activity,以及其他一些查看或修改信息的Activity。每一個Activity都是相對獨立的,這些Activity一起工作,共同組成了一個聯系人應用程序。一個應用程序可以包含一個或多個Activity,通常每個應用程序運行后都會啟動一個Activity展現出第一個界面,在當前展現給用戶的Activity中啟動一個新的Activity或調用其他應用程序的Acitivity,實現從一個界面跳轉到另外一個界面。
服務(Service)
Service在后臺運行,沒有展現出用戶界面。它們可以為前臺的Activity提供數據源更新,并觸發通知。例如,用戶處理其他事情的時候可以啟動一個Service播放背景音樂,或者啟動郵件客戶端的一個Service通過間斷性地連接郵件服務器下載新郵件。
Service的另一種重要的用途為通過AIDL(Android Interface Definition Language,Android接口描述語言)實現進程間通信。例如,在某一應用程序中,其他應用程序組件可以直接與該應用程序后臺運行的Service進行交互;另一方面,多個應用程序通過Service,可以在保證進程安全的前提下,實現它們之間的通信 。
內容提供者(Content Provider)
Content Provider是一種應用間數據共享的機制,提供了多個應用程序共享存儲數據的方式,相當于一種跨應用程序的數據操作,一個應用程序可以允許其他應用程序通過Content Provider對其SQL數據,圖像,聲音或其他數據類型進行增,刪,改,查等操作。Content Provider為數據進行操作提供了統一的接口,為應用程序提供了4個接口函數:intsert,update,delete及query,Content Provider屏蔽了數據操作的具體實現細節,應用程序只需要通過Content Provider調用相應接口函數即可完成操作,這種方式大大簡化了跨應用程序的數據操作。
廣播接收者(Broadcast Receiver)
Broadcast Receiver不執行任何任務。每個Broadcast Receiver都會接收系統或應用程序產生的廣播通知,并對廣播通知做出響應。很多事件都可能導致系統廣播,例如手機所在時區發生變化,電池電量低,用戶改變系統語言設置等。應用程序同樣也可以發送廣播通知,例如通知其他應用程序某些數據已經下載完畢,可以使用了。
一個應用程序可以包含若干個Broadcast Receiver來響應它認為很重要的通知。Broadcast Receiver可以啟動一個Activity以響應接收到的信息,或者通過Notification Manager通知用戶。
意圖(Intent)
Intent的作用是在組件之間傳遞信息和協調工作。Android彼此獨立的應用組件需要互相調用,協調工作,最終整合成為一個真正的Android應用。組件之間的協調工作主要由Intent完成,它起到Activity,Service,Content Provider之間聯系的紐帶作用。Intent有許多具體的實現,但本質上它們代表著一組系列化的數據,能夠在應用程序中傳播以實現某些功能。一個Intent包含了一次操作的信息,比如需要的動作,該動作相關的數據以及Android系統所需要的信息。Android則根據此Intent提供的信息進行描述,負責找到滿足這些信息的組件,將Intent傳遞給該組件,并完成組件的調用。因此,Intent在這里起著一個媒體中介的作用,專門提供組件互相調用的相關信息,實現調用者與被調用者之間的聯系。
活動(Activity)
Activity是應用程序的表示層,為用戶展示界面,提供了可視的界面,與用戶進行交互;一個Activity通常展現為一個可視化的用戶界面,比如一個手機的聯系人功能可能包含一個顯示聯系人列表的Activity,一個可編輯聯系人信息的Activity,以及其他一些查看或修改信息的Activity。每一個Activity都是相對獨立的,這些Activity一起工作,共同組成了一個聯系人應用程序。一個應用程序可以包含一個或多個Activity,通常每個應用程序運行后都會啟動一個Activity展現出第一個界面,在當前展現給用戶的Activity中啟動一個新的Activity或調用其他應用程序的Acitivity,實現從一個界面跳轉到另外一個界面。
服務(Service)
Service在后臺運行,沒有展現出用戶界面。它們可以為前臺的Activity提供數據源更新,并觸發通知。例如,用戶處理其他事情的時候可以啟動一個Service播放背景音樂,或者啟動郵件客戶端的一個Service通過間斷性地連接郵件服務器下載新郵件。
Service的另一種重要的用途為通過AIDL(Android Interface Definition Language,Android接口描述語言)實現進程間通信。例如,在某一應用程序中,其他應用程序組件可以直接與該應用程序后臺運行的Service進行交互;另一方面,多個應用程序通過Service,可以在保證進程安全的前提下,實現它們之間的通信 。
內容提供者(Content Provider)
Content Provider是一種應用間數據共享的機制,提供了多個應用程序共享存儲數據的方式,相當于一種跨應用程序的數據操作,一個應用程序可以允許其他應用程序通過Content Provider對其SQL數據,圖像,聲音或其他數據類型進行增,刪,改,查等操作。Content Provider為數據進行操作提供了統一的接口,為應用程序提供了4個接口函數:intsert,update,delete及query,Content Provider屏蔽了數據操作的具體實現細節,應用程序只需要通過Content Provider調用相應接口函數即可完成操作,這種方式大大簡化了跨應用程序的數據操作。
廣播接收者(Broadcast Receiver)
Broadcast Receiver不執行任何任務。每個Broadcast Receiver都會接收系統或應用程序產生的廣播通知,并對廣播通知做出響應。很多事件都可能導致系統廣播,例如手機所在時區發生變化,電池電量低,用戶改變系統語言設置等。應用程序同樣也可以發送廣播通知,例如通知其他應用程序某些數據已經下載完畢,可以使用了。
一個應用程序可以包含若干個Broadcast Receiver來響應它認為很重要的通知。Broadcast Receiver可以啟動一個Activity以響應接收到的信息,或者通過Notification Manager通知用戶。
意圖(Intent)
Intent的作用是在組件之間傳遞信息和協調工作。Android彼此獨立的應用組件需要互相調用,協調工作,最終整合成為一個真正的Android應用。組件之間的協調工作主要由Intent完成,它起到Activity,Service,Content Provider之間聯系的紐帶作用。Intent有許多具體的實現,但本質上它們代表著一組系列化的數據,能夠在應用程序中傳播以實現某些功能。一個Intent包含了一次操作的信息,比如需要的動作,該動作相關的數據以及Android系統所需要的信息。Android則根據此Intent提供的信息進行描述,負責找到滿足這些信息的組件,將Intent傳遞給該組件,并完成組件的調用。因此,Intent在這里起著一個媒體中介的作用,專門提供組件互相調用的相關信息,實現調用者與被調用者之間的聯系。
總結
以上是生活随笔為你收集整理的android 组件(activity,service,content provider,broadcast receiver,intent)详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android manifest简介
- 下一篇: dalvik 与art 区别