Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 學習Android從0開始之基礎篇(1)-Android的四大基本組件

學習Android從0開始之基礎篇(1)-Android的四大基本組件

編輯:關於Android編程

Android應用的四大基本組件簡介

Android應用通常由四部分組成,包括:Activity Service BroadcastReceiver ContentProvider;本篇博客將對這四個組件做基本介紹,讓大家對這些組件有一個大致的認識,後面的博客將還會對它們做詳細講解。

Activity Activity是android應用中負責與用戶進行交互的的組件,就是我們android手機呈現界面的組件,你可以把它想象成相框,我們android應用呈現的畫面都是在這個相框裡面,而這個相框的大小就是我們手機屏幕的大小。他負責呈現畫面給我們用戶,並接受我們用戶的點擊 滑動等一系類響應事件。當我們把android應用要呈現的界面(XML文件)設計好後,然而activity只能通過setContentView(View) 來顯示指定的界面,好比,我們把照片拍好後,選擇用哪個相框來裝載這張照片,因此這樣 來為activity綁定顯示界面。 setContentView(View)的使用一般是下面的形式:
setContentView(R.layout.main);
其中的R.layout.main 是android資源文件中的一個布局文件,相當於是相片。 注意的是,實際上Actvity是Window的容器,Activity包含一個getWindow()方法,這個方法返回Activity所包含的窗口,對於Activity,作為開發者的我們是不用關心它的window對象,如果應用程序不用調用Activity的setContentView()方法來設置該activity的顯示界面,那麼該應用將顯示一個空的窗口。 一個android應用包含很多個Activity,多個activity組成activity棧,存儲方式為先進後出,就像箱子裡面放書一樣,先放進去的書放在最下面,最後放進去的在最上面,所以當前運行的activity位於棧頂。 還有一點就是我們Activity可以設計它自身的風格,就是主題,使用setTheme(int resouceId)就可以指定activity的使用風格,比如有些時候我們的activity不需要使用actionBar 或者以對話框的形式顯示,就可以使用這個方法實現,也可以在AndroidManifest.xml指定activity的顯示風格。     2. Service   Service可以說 是和activity一樣重要的,它只是沒有顯示界面而已,service通常運行在後台,因為沒有界面顯示,所以一般不需要與用戶進行交互。 Service組件需要繼承Service基類,Service運行之後擁有自己獨立的生命周期,Service組件通常是用於為其他組件提供後台服務,或者監聽其他組件的運行狀態。其中典型的應用就是 音樂播放器,首頁是activity呈現給用戶的界面,後台播放音樂有Service來完成,Service播放了多少秒然後通知Activity更新界面。Activity的播放暫停按鈕被用戶點擊了,然後通知Service停止或播放音樂。   3. BroadcastReceiver   BroadcastReceiver 是 android 應用 中一個非常重要的組件,根據這個名字,大家肯定知道了它其實就是廣播消息接收器,與普通的監聽器不同的是:普通的監聽器監聽的事件源氏程序中的對象,而BroadcastReceiver監聽的事件源是Android應用中的其他組件(activity receiver)。 使用broadcastReceiver組件接受廣播消息比較簡單,我們只需要實現自己的BroadcatReceiver子類,並重寫onRecerver(Context context,Intent intent)方法即可。當其他組件通過sendBroadcast() 或者sentStickyBroadcast() 或者sentOrderBroadcast()方法發送廣播消息時,如果該BroadcastReceiver對這個消息感興趣,通過IntentFilter配置(這是一個過濾器,設置一些條件,如果某個消息和這些條件匹配,則激活BroadcastReceiver),BroadcastReceiver的onReceive()方法就會被激活,這個方法中設置的一些動作就會被執行。就像Service中播放音樂播放完了之後,它就通過sendBroadcast()向activity發送消息,activity收到消息後,就會執行BroadcastReceiver中的onReceive()中的方法,activity就會在界面上做出相應的界面更新。 BroadcastReceiver有兩種注冊方式,只有注冊之後才能啟動,否則是不會有消息發送和接收的。如下兩種方法:   (1). 在java代碼中通過Context.registReceiver()方法注冊BroadcastReceiver; (2). 在AndroidManifest.xml中使用元素完成注冊; 這裡只對BroadcastReceiver做簡短介紹,後面的博客中將會對它進行詳細講解,並教會大家怎樣開發和使用它。   4. ContentProvider   對於Android應用程序,它們是單獨運行在自己的Dalvik虛擬機實例中,如果這些Android應用之間需要進行實時的數據交換,則需要contentProvider來完成這個工作,當要獲取手機聯系人時,就會用到它; ContentProvider是Android系統為跨應用的數據交換的一個標准,當用戶實現自己的ContentProvider的時候,要實現它的以後4個方法: (1) insert(Uri, ContentValues):向ContentProvider插入數據; (2) delete(Uri, ContentValues):刪除contentProvider中指定的數據; (3) update(Uri,ContentValues,String,String[ ]):更新ContentProvider中指定的ContentProvider; (4) query(Uri, String[ ], String ,String[ ],String): 從ContentResolver查詢數據; 通常使用ContentProvider時都會結合使用ContentResolver,一個應用程序來暴露自己的數據給外界,而另一個程序則通過ContentResolver來訪問數據;     5. Intent 和 IntentFilter   intent在android 應 用 程序 中的地位非常之高,作用非常之大。它是Android應用程序內部不同組件之間通信的載體。當android運行時需要鏈接不同的組件時,就需要Intent來實現。Intent可以啟動一個Activity,也可以啟動一個Service,也可以通過發送廣播消息來觸發系統中的BroadcastReceiver。也就是說,intent是Activity,Service,BroadcastReceiver 這3個組件之間通信的載體,只是它們使用Intent的方式機制有些不同罷了。   (1)當需要啟動一個activity時,可調用Context的startActivity(Intent intent)或者 startActivityForResult(Intent intent,int requestCode)方法,這兩個方法中的intent都封裝了需要啟動的目標activity的信息; (2)當需要啟動一個Service時,可調用Context的startService(Intent intent)或者bindService(Intent service, ServiceConnection conn,int flags)方法,這兩個方法中的intent都封裝了需要啟動的目標service的信息; (3)當需要觸發一個BroadcastReceiver時,可調用Context的sendBroadcast(Intent intent) 或 sendStickyBroadcast(Intent intent) 或 sendOrderBroadcast(Intent intent,String receiverPermission) 方法來發送廣播消息,這三個方法中的intent封裝了需要觸發的目標BroadcastReceiver 的信息;   通過上面的介紹,可以看出,Intent封裝了當前組件需要啟動或觸發的目標的信息,然而Intent分為兩類:   (1) 顯示 Intent :顯示Intent明確指定需要啟動或者觸發的組件的類名; (2) 隱示 Intent:隱示Intent只是指定了需要啟動啟動或者觸發的組件需要應滿足怎樣的條件;   對於顯示Intent,Android系統無需對該Intent做任何解析,系統直接找到指定的目標組件,啟動會觸發它即可; 對於隱示Intent,Android系統需要對該Intent進行解析,解析出它的條件,然後去系統中查找與之匹配的目標組件。如果有滿足條件的組件就啟動或觸發它。 隱示Intent通過IntentFilter來實現的,被調用組件可以通過IntentFilter來聲明自己所滿足的條件,就是聲明自己到底能處理哪些Intent。Intent和IntentFilter有很多內容,後面的博客會做詳細介紹。本次博客就介紹這麼多。  
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved