2011年5月10日 星期二

Android Application Components

Android 應用程式 構成要素

具有以下四種要素:
  • Activities (活動,前景執行的程序)
    • 一個Activity代表一個單一的螢幕與一個使用者介面。

    • 例如,一個email Application也許它有一個Activity用來顯示一個新的電子郵件列表(new email list),另一個Activity撰寫電子郵件,而另一個Activity則是讀取郵件,這些Activity work凝聚在一起形成了一個電子郵件應用程式,但其實每一個Activity都是獨立的,因此不同的Application可以啟動任一個Activities(如果電子郵件應用程序允許的話)。

    • 例如,攝影機的Application可以啟動email Application的new email的Activities,撰寫新的郵件,讓使用者可以分享圖片。

    • android中的任何activity都是Activity的子類,應用程式中屬於Activity的程序都需要extends Activity這個類或其子類,關於更多的Activities學習請參考Activities學習指南
  • Service(服務,背景執行的程序)
    • Service是一個Component,運作於背景,用來執行長時間運行的操作或是遠端操作的處理程序(remote process)。

    • service是不提供使用者操作介面的(在背景當然不需要囉)。

    • 例如:一個service在背景程序中執行音樂播放,而使用者在其他的Application中執行操作,也可能利用一個remote service經由網路取得資料而不干擾使用者正在進行互動的activity。

    • 其他的component,如一個activity,可以啟動service讓他運作或是綁定(bind)他,目的是為了讓他可以互動。


    • andorid中的service都是Service的子類,屬於service的程序都需要繼承Service或其子類,關於Service請參考Service開發指南
  • Content providers (內容提供者)
    • 一個Content providers管理一組共享的application資料。

    • 你能夠在檔案系統中儲存資料,一個SQLite資料庫在web上或其他持久性的的儲存位置,你的application可以存取。

    • 透由Content providers,其他的應用程式能夠查詢或是修改資料,如果內容供應者允許的話(if the content provider allows it)。

    • 例如,Android系統提供一個Content provider管理著用戶的內容資訊(contact information)。因此任何具有適當權限的應用程序可以查詢部分content providers(ContactsContract.Data)的讀取與寫入特定人的相關訊息。

    • content providers也用於私有的(private)讀取與寫入,在你的應用程式上並且不是分享的。例如,Note Pad應用程式使用一個content provider保存筆記。

    • Android中的content provider都是ContentProvider的子類,content provider除了實現了ContentProvider之外還需實現一套標準的API,使得其他程序能夠藉由API來交易取得資料,關於ContentProvider請參考ContentProvider開發指南

  • Broadcast receivers (廣播接收機)
    • 一個Brodcast receivers是一個component,他用來回應系統全部的廣播通知。

    • 許多廣播是源自於系統本身,例如,螢幕被關閉、電量不足、圖片被截取。

    • 應用程序也可以發出廣播訊息,例如,令其他的應用程式知道,有一些資料已經被下載到裝置上,是可以被使用的。

    • 雖然broadcast receivers不會顯示一個使用者介面,但他們可能會建立一個status bar notification (create a status bar notification)來提醒用戶一個廣播事件發生。

    • 更常見的是, though, a broadcast receiver is just a "gateway" to other components and is intended to do a very minimal amount of work.(做一個非常少量的工作)

    • For instance, it might initiate a service to perform some work based on the event.
      例如它可能會啟動一個service來執行一些基礎的工作。

    • Android的broadcase receiver都是BroadcastReceiver的子類,且每一個broadcast都會交付一個Intent物件,更多的訊息請看BroadcastReceiver Class。

沒有留言:

張貼留言