Android應用程式組件深入剖析

來源:互聯網
上載者:User

Android應用程式由一些零散的有聯絡的組件組成,通過一個工程manifest綁定在一起。在manifest中,描述了每一個組件以及組件的作用。這裡有6個組件,它們是Android應用程式的基石:

Activitiy(活動)

應用程式的顯示層。Activity就是一個使用者可視化,可互動的介面。 其特點如下:

  • 應用程式可以有1..N個Activity,每個Activity彼此獨立,都是Activity類的擴充;
  • 通常,有一個Activity被應用程標記為啟動後的第一個Activity;
  • Activity預設會被賦予一個可繪製的視窗,通常預設視窗填充整個螢幕;
  • Activity使用Views去構建UI來顯示資訊和響應使用者的行為。

視窗的可視內容由多層Views(從View基類派生的對象)提供,視窗內的每個視圖控制項是一個特定的矩形空間。父視圖包含並組織他們子視圖的布局。葉子視圖(在階層的底部)在繪製的矩形空間中控制和響應使用者操作。這樣,使用者能過Activity的視圖發出Intent請求。 一個視圖階層通過Activity.setContentView()方法被放置在Activity的視窗中。內容視圖是View階層的根對象。

 

Service(服務)

Service是一個使用者不可見,無時間限制運行在背景服務。它負責更新的資料來源和可見的Activity,以及觸發通知。 其特點如下:

  • 所有Service都是基類Service的子類實現;
  • 常用來執行一些需要持續啟動並執行處理;
  • 可以串連(綁定)其他持續啟動並執行服務(如果它尚未運行,並啟動該服務),通過服務公開的介面與服務進行通訊。

Service像Activity和其他組件一樣,在應用程式的主線程中運行。為了不阻塞其他組件或使用者介面,他們常常產生另一個線程來處理耗時的任務。

 

Broadcast receivers(廣播接收器)

Intent廣播的“消費者”。通過建立和註冊一個Broadcast Receiver,應用程式可以監聽符合特定條件的廣播的Intent。Broadcast Receiver 會自動的啟動你的Android應用程式去響應新來的Intent。Broadcast Receiver是事件驅動程式的理想手段。 Broadcast receiver不顯示使用者介面。然而,他們可能會啟動一個Activity來響應收到的資訊,或使用NotificationManager來提醒使用者。通知可以以各種方式得到了使用者的注意 - 背光燈閃爍,震動裝置,播放聲音,等等。他們通常放置在狀態列,使用者可以開啟狀態列中特定的表徵圖來得到的訊息。

 

Content providers(內容提供器)

提供共用的資料存放區。Content Provider(內容提供器)用來管理和共用應用程式的資料庫。在應用程式間,Content Provider是共用資料的首選方式。這意味著,你可以配置自己的Content Provider去存取其他的應用程式或者通過其他應用程式暴露的Content Provider去存取它們的資料。Android裝置本身包含了幾個Content Provider來訪問像連絡人資訊等有用的資料庫。 這些資料可以儲存在檔案系統中,在一個SQLite資料庫,或以任何其他可識別的方式。ContentProvider派生自ContentProvider基類,它使用其他應用程式去檢索和儲存其可控類型的資料的方法來執行標準設定,然而,應用程式不直接調用這些方法。相反,他們使用ContentResolver對象,並調用它的方法。一個ContentResolver可以和任何ContentProvider互動,它與Provider協作來管理任何處理序間通訊。

 

Intents(意圖)

簡單的訊息傳遞架構。使用Intent,你可以在整個系統內廣播訊息或者給特定的Activity或者服務來執行你的行為意圖。系統會決定那個(些)目標來執行適當的行為。

 

Notifications(通知)

使用者通知的架構。Notification用來在不需要焦點或不中斷它們當前Activity的情況下提示使用者。它們是Service或Broadcast Receiver獲得使用者注意的首選方式。例如,當裝置收到文本資訊或外部來電時,它通過閃光,發聲,顯示表徵圖或顯示對話方塊資訊來提醒你。

Android的一個主要特點是,一個應用程式可以使用其他應用程式(這些應用程式許可證)的元素。例如Content Provider或Service——你的和其他的都是第三方的。

對於這項工作,該系統必須能夠在啟動應用程式時處理它需要的任何部分,並將那部分執行個體化成Java對象。因此,不同於多數其他系統上的應用程式,Android應用程式沒有一個單一的進入點來處理應用程式中的所有內容(例如沒有main()函數)。其中上面提到的組件是應用程式可以執行個體化和運行需要的重要組成部分。

 

 

參考資料: http://developer.51cto.com/art/201001/180361.htm

http://developer.android.com/guide/topics/fundamentals.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.