安卓四大組件(小白篇)

安卓的四大組件分別是:

       1,活動activity,用於表現服務; 

       2,服務service,後臺運行服務,不提供界面呈現;

       3,廣播接受者(broadcast receive),用於接受廣播;

       4,內容提供者(content provider),支持在多個應用中存儲和讀取數據,相當於數據庫

1,Activity

(1)定義:四大組件之一,用戶操作的可視化界面,爲用戶提供了完成操作指令的窗口。我們創建完Activity,需要調用setContentView(R.佈局文件)方法完成界面的顯示,其中Activity的佈局一般都在佈局文件xml中進行配置;在安卓中主要能看見的幾乎都是依託於Activity,其是開發中使用最頻繁的組件。

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

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

(4)Activity之間通過Intent進行通信

(5)Activity的生命週期

在安卓中有一個activity棧,當一個新的activity創建的時候,就會放在棧頂,這時候,這個activity就處於運行狀態,再有一個新的activity被創建的時候,前一個就會被壓入棧底,就跟上子彈一樣。

a,運行中:在棧頂,可見,可以與用戶交互

b,暫停:失去焦點,不能交互,依然可見。比如說一個非全屏的,或者透明的Activity放在棧頂,就會讓前一個activity處於暫停狀態,暫停時,這個activity的各種數據還保持着;只有在系統內存很低的情況下,系統纔會自動銷燬Activity。

c,停止:activity被另一個activity完全覆蓋的時候,或者home鍵後,activity進入了後臺,這時候就是停止狀態,跟暫停相似。這時候activity中的數據還保持着。當系統別的地方要使用到內容時,系統會自動銷燬Activity。

d,銷燬:我們點擊返回鍵,或者系統內存不足時,activity就會被系統回收,從棧裏面銷燬。

如下所示

2,Service

3,Broadcast Receive

在安卓中,廣播是一種,廣泛應用的在應用程序之間傳輸信息的機制。而廣播接收器是對發送出來的廣播進行過濾接受並響應的一類組件,可以使用廣播接收器來讓應用對一個外部事件做出響應,例如,電話呼入的時候,可以使用廣播接收器進行處理,下載完成的時候,開機的時候,點擊按鈕的時候,都可以使用廣播接收器進行處理,廣播接收器既可以在AndroidManifest.xml(靜態註冊),也可以在代碼中使用Context.registerReceive()註冊。各種應用還可以通過使用Context.sendBroadcast()將他們自己的Intent廣播給其他應用程序。

(1)你的應用可以使用廣播對外部事件進行過濾,只對感興趣外部事件進行接受並且作出響應。廣播接收器沒有用戶界面,需要啓動一個activity來響應接受到的消息,或者使用NotificationManager通知用戶,通知可以有圖標,震動,聲音等。

(2)廣播接受者的註冊有靜態註冊與動態註冊(代碼中運行時註冊,或者在AndroidManifest.xml中靜態註冊)

(3)動態註冊廣播特點是當用來註冊的Activity關掉後,廣播就失效了。靜態註冊無需擔憂廣播接收器是否被關閉,只要設備開的,接收器就是打開。也就是說APP沒有啓動,其訂閱的廣播在觸發時,也會對他起作用。

 

 

4,內容提供者(Content Provider)

安卓的四大組件之一,主要用於不同的應用程序之間實現數據共享功能。

(1)安卓提供了Content Provider使一個應用程序的制定數據集能夠提供給其他應用程序,其他應用程序可以通過ContentResolver類從該內容中獲取或存入數據

(2)只有需要在多個應用程序中共享數據才需要內容提供者,比如說通訊錄數據被其他應用程序使用,就應該存儲在一個內容提供和中,好處是統一數據訪問方式

(3)內容提供者實現了數據共享,起用於保存和獲取數據,並且其對所有的應用程序可以見,這是不同應用程序見共享數據的唯一方式。因爲安卓沒有提供所有應用共同訪問的公共存儲區。

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

(ContentResolver是數據調用者,ContentProvider將數據發佈出來,通過ContentResolver對象結合Uri進行調用,通過ContentResolver對象可以調用ContenProvider的CRUD)

(5)內容提供者使用URI來唯一標示其數據集,這裏的URI以conten://作爲前綴,表示該數據由內容提供者來管理

Uri代表數據操作的地址,每一個ContentProvider發佈數據都會有一個唯一的地址。比如:content://(固定寫法)+com.android.contacts(包名,可變)+/contacts(path路徑)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章