• <form id="qkrj8"></form>
    <wbr id="qkrj8"></wbr>

  • Android、Intent的深入解析

    [來源] 達內    [編輯] 達內   [時間]2012-12-03

    在Android軟件環境中,應用程序是由一組Activities 組成的,而每一個Activity 不但是本應用的組成部分,而且也對外開放,可以向同一系統內任何一個外部應用提供服務。例如,編制手機短信無疑需要一個小型編輯器

      Android、Intent的深入解析

      在Android軟件環境中,應用程序是由一組Activities 組成的,而每一個Activity 不但是本應用的組成部分,而且也對外開放,可以向同一系統內任何一個外部應用提供服務。例如,編制手機短信無疑需要一個小型編輯器,這個編輯 器在 Android中由一個Activity 實現,并且可以以構件的形式暴露出來。如果開發者在開發另外一個應用程序的過程中需要一個小型編輯器,則無須重新開發,可直接調用短信應用中的這個編輯器 Activity 得以實現。這種多層次的組合能力,與Web 2.0 基于XML的mash-up如出一轍。

      Android 調用activity 所提供的接口(服務),并不是直接調用,而是借助一個叫做Intent 的機制實現的。所謂intent 就是對于服務的調用請求。與其他技術體系不同的是,Android可以無須明確地指定要那個組(activity)來滿足自己的調用請求,而是可以要求系 統根據它的要求,自動選擇一個能夠滿足要求的activity 來提供所需的服務。

      大致的過程如下:每一個activity 都可以對外提供一系列的服務,這些服務以Intent-filter 的形式對外公開,并提交給系統進行注冊。所謂intent-filter,就是一個activity 的能力列表。例如,一個用于編輯短信正文的文本編輯器activity 應通過AndroidManifest.xml文件中的 元素向系統注冊,表明activity具有EDIT 和VIEW文本數據的能力,如果有另一個客戶要求EDIT和VIEW一段文本數據,則系統可以調用本activity 予以滿足。Activity 本身既是提供服務的組件,也可以是組件的客戶。

      例如一個備忘錄應用中,應用啟動時可以顯示一個現有備忘錄的列表,這是由一個activity 實現的。而當用戶選擇編輯或新建一個備忘時,這個activity 需要一個文本編輯器activity 來完成這項工作。它怎么做呢?當然不需要自己從頭開發一個,而只需要以intent 的方式告訴系統說:“我需要一個具有編輯文本能力的activity 來幫我編輯一個備忘信息”,系統會自動尋找在 中聲稱具有該項能力的activity,然后激活這個 activity,用來滿足這個intent。

    資源下載

    ?