天天看點

Android開發之路--(2)--Android四大元件

版權聲明:本文為部落客原創文章,轉載請标明出處。 https://blog.csdn.net/lyhhj/article/details/47214197

    說實話我對Android的了解還是比較淺顯的,但是也嘗試着寫一下自己的感受吧。

    做了幾個月的工作,對Android的了解就是Android的四大元件:Activity、Service、Broadcast Receiver、Content Provider。下面我來詳細介紹一下這四大元件:

1.Activity:

Activity衆所周知,也就是一個活動,相當于界面,用來顯示内容的。它是Android應用中負責與使用者互動的元件,可以把它想象成Swing程式設計中的JFrame控件。Activity為Android應用提供可視化使用者界面,如果一個應用需要多個界面,那麼這個應用就有多個Activity組成,這些Activity組成Activity棧,目前的Activity處于棧頂的位置。Activity包含View元件,View元件是由所有的UI控件,容器控件組成的。

要深入了解Activity,就要掌握Activity的生命周期。

在實作 Activity 類的時候,通過覆寫( override )這些方法即可在你需要處理的時候來調用。

  一、 onCreate :當活動第一次啟動的時候,觸發該方法,可以在此時完成活動的初始化工作。

  onCreate 方法有一個參數,該參數可以為空( null ),也可以是之前調用onSaveInstanceState ()方法儲存的狀态資訊。

  二、 onStart :該方法的觸發表示所屬活動将被展現給使用者。

  三、 onResume :當一個活動和使用者發生互動的時候,觸發該方法。

  四、 onPause :當一個正在前台運作的活動因為其他的活動需要前台運作而轉入背景運作的時候,觸發該方法。這時候需要将活動的狀态持久化,比如正在編輯的資料庫記錄等。

  五、 onStop :當一個活動不再需要展示給使用者的時候,觸發該方法。如果記憶體緊張,系統會直接結束這個活動,而不會觸發 onStop 方法。 是以儲存狀态資訊是應該在onPause時做,而不是onStop時做。活動如果沒有在前台運作,都将被停止或者Linux管理程序為了給新的活動預留足夠的存儲空間而随時結束這些活動。是以對于開發者來說,在設計應用程式的時候,必須時刻牢記這一原則。在一些情況下,onPause方法或許是活動觸發的最後的方法,是以開發者需要在這個時候儲存需要儲存的資訊。

  六、onRestart :當處于停止狀态的活動需要再次展現給使用者的時候,觸發該方法。

  七、 onDestroy :當活動銷毀的時候,觸發該方法。和onStop 方法一樣,如果記憶體緊張,系統會直接結束這個活動而不會觸發該方法。

2.Service

與Activity的地位是并列的,它也代表一個單獨的Android元件。Service與Activity的差別在于:Service通常位于背景運作,它一般不需要與使用者互動,是以Service元件沒有圖形使用者界面。Service元件需要繼承Service基類。一個Service元件被運作起來之後,它将擁有自己獨立的生命周期,Service元件通常用于為其他元件提供背景服務或監控其他元件的運作狀态。

3.Broadcast Receiver

是Android應用中另一個重要的元件,BroadcastReceiver代表廣播消息接收器。從代碼實作角度來看,BroadcastReceiver非常類似于事件程式設計中的監聽器。與普通事件監聽器不同的是:普通事件監聽器監聽的事件源是程式中的對象;而BroadcastReceiver監聽的事件源Android應用中的其他元件。使用BroadcastReceiver元件接收廣播消息比較簡單,開發者隻要實作自己的BroadcastReceiver子類,并重寫onReceive(Context

context,Intent intent)方法即可。當其他元件通過sendBroadcast()、sendStickyBroadcst()或sendOrderedBroadcast()方法發送廣播時,如該BroadcastReceiver也對該消息“感興趣”(通過IntentFilter配置),BroadcastReceiver的onReceive(Context context,Intent intent)方法将會被觸發。   開發者實作裡自己的BroadcastReceiver之後,通常有兩種方式來注冊這個系統級的“事件監聽器”。

-->在Java代碼中通過Context.registReceiver()方法注冊BroadcastReceiver。

-->在AndroidManifest.xml檔案中使用<receiver……>元素完成注冊。

4.Content Provider

對于Android應用而言,元件必須互相獨立,如果這些Android應用之間需要實作實時的資料交換。例如我們開發裡一個發送短信的程式,當發送短信時需要從聯系人管理應用中讀取指定聯系人的資料----這就需要多個應用程式之間進行實時的資料交換。

    Android系統為這種跨應用的資料交換提供裡一個标準,ContentProvider。當使用者實作自己的ContentProvider時,需要實作如下抽象方法。

Insert(Uri, ContentValues):向ContentProvider插入資料。

Deleter(Uri,ContentValues):删除ContentProvdier中指定資料。

Update(Uri, ContentValues, String, String[] ):更新ContentProvider中指定資料。

Query(Uri, String[], String, String[], String):從ContentProvider查詢資料。

通常與ContentProvider結合使用的是ContentResolver,一個應用程式使用ContentProvider暴露自己的資料,而另一個應用程式則通過ContentResoler來通路資料。

Intent和IntentFilter  嚴格的說,Intent并不是Android的元件,但它對于Android應用的作用非常大----它是Android應用内不同元件之間通信的載體。當Android運作時需要連接配接不同的元件時,通常就需要借助于Intent來實作。Intent可以啟動應用中另一個Activity,Service,BroadcastReceiver。

目前本人對四大元件了解就這麼多,還沒有深入的了解,本文也參考了網上的資料,如有錯誤的地方還希望大家指正。