成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Android中的Intent詳細講解

系統
在一個Android應用中,主要是由四種組件組成的,這四種組件可參考“Android應用的構成”。

在一個Android應用中,主要是由四種組件組成的,這四種組件可參考“Android應用的構成”。

而這四種組件是獨立的,它們之間可以互相調用,協調工作,最終組成一個真正的Android應用。

在這些組件之間的通訊中,主要是由Intent協助完成的。

Intent負責對應用中一次操作的動作、動作涉及數據、附加數據進行描述,Android則根據此Intent的描述,負責找到對應的組件,將 Intent傳遞給調用的組件,并完成組件的調用。

因此,Intent在這里起著一個媒體中介的作用,專門提供組件互相調用的相關信息,實現調用者與被調用者之間的解耦。

例如,在一個聯系人維護的應用中,當我們在一個聯系人列表屏幕(假設對應的Activity為listActivity)上,點擊某個聯系人后,希望能夠跳出此聯系人的詳細信息屏幕(假設對應的Activity為detailActivity)

為了實現這個目的,listActivity需要構造一個 Intent,這個Intent用于告訴系統,我們要做“查看”動作,此動作對應的查看對象是“某聯系人”,然后調用startActivity (Intent intent),

將構造的Intent傳入,系統會根據此Intent中的描述,到ManiFest中找到滿足此Intent要求的Activity,系統會調用找到的 Activity,即為detailActivity,最終傳入Intent,detailActivity則會根據此Intent中的描述,執行相應的操作。

一、抽象描述要描述什么

在Android參考文檔中,對Intent的定義是執行某操作的一個抽象描述(確實很抽象)。我們先來看看這里的抽象描述,到底描述了什么。

首先,是要執行的動作(action)的一個簡要描述,如VIEW_ACTION(查看)、EDIT_ACTION(修改)等,Android為我們定義了一套標準動作:

復制內容到剪貼板

代碼:
MAIN_ACTION
VIEW_ACTION
EDIT_ACTION
PICK_ACTION
GET_CONTENT_ACTION
DIAL_ACTION
CALL_ACTION
SENDTO_ACTION
ANSWER_ACTION
INSERT_ACTION
DELETE_ACTION
RUN_ACTION
LOGIN_ACTION
CLEAR_CREDENTIALS_ACTION
SYNC_ACTION
PICK_ACTIVITY_ACTION
WEB_SEARCH_ACTION
  

此外,我們還可以根據應用的需要,定義我們自己的動作,并可定義相應的Activity來處理我們的自定義動作。

其次,是執行動作要操作的數據(data),Android中采用指向數據的一個URI來表示,如在聯系人應用中,一個指向某聯系人的URI可能為:content://contacts/1。

這種URI表示,通過 ContentURI這個類來描述,具體可以參考android.net.ContentURI類的文檔。

以聯系人應用為例,以下是一些action / data對,及其它們要表達的意圖:

復制內容到剪貼板

代碼:
VIEW_ACTION content://contacts/1-- 顯示標識符為"1"的聯系人的詳細信息
EDIT_ACTION content://contacts/1-- 編輯標識符為"1"的聯系人的詳細信息
VIEW_ACTION content://contacts/-- 顯示所有聯系人的列表
PICK_ACTION content://contacts/-- 顯示所有聯系人的列表,并且允許用戶在列表中選擇一個聯系人,然后把這個聯系人返回給父activity。例如:電子郵件客戶端可以使用這個Intent,要求用戶在聯系人列表中選擇一個聯系人

另外,除了action和data這兩個重要屬性外,還有一些附加屬性:

category(類別),被執行動作的附加信息。例如 LAUNCHER_CATEGORY 表示Intent 的接受者應該在Launcher中作為***應用出現;而ALTERNATIVE_CATEGORY表示當前的Intent是一系列的可選動作中的一個,這些動作可以在同一塊數據上執行。

type(數據類型),顯式指定Intent的數據類型(MIME)。一般Intent的數據類型能夠根據數據本身進行判定,但是通過設置這個屬性,可以強制采用顯式指定的類型而不再進行推導。

component(組件),指定Intent的的目標組件的類名稱。通常 Android會根據Intent 中包含的其它屬性的信息,比如action、data/type、category進行查找,最終找到一個與之匹配的目標組件。但是,如果 component這個屬性有指定的話,將直接使用它指定的組件,而不再執行上述查找過程。指定了這個屬性以后,Intent的其它所有屬性都是可選的。

extras(附加信息),是其它所有附加信息的集合。使用extras可以為組件提供擴展信息,比如,如果要執行“發送電子郵件”這個動作,可以將電子郵件的標題、正文等保存在extras里,傳給電子郵件發送組件。

總之,action、 data/type、category和extras 一起形成了一種語言。

這種語言使系統能夠理解諸如“查看某聯系人的詳細信息”之類的短語。

隨著應用不斷的加入到系統中,它們可以添加新的action、 data/type、category來擴展這種語言。

應用也可以提供自己的Activity來處理已經存在的這樣的“短語”,從而改變這些“短語”的行為。

【編輯推薦】

  1. Android曝安全漏洞 黑客可安裝擊鍵記錄軟件
  2. 新版Android SDK搞差別待遇 Google激怒開發人員
  3. 初識Android程序開發(1)

 

責任編輯:龐桂玉 來源: IT168
相關推薦

2013-01-10 15:36:44

Android開發組件Intent

2014-07-15 10:16:02

AndroidIntent

2013-01-10 14:54:48

Android開發組件Intent

2010-01-25 16:52:22

Android Int

2013-05-27 14:06:14

Android開發移動開發Intent機制

2013-03-28 09:07:37

Android開發Intent機制

2012-07-23 13:22:42

Intent Filt安全Android

2010-01-06 09:40:07

Ubuntu時間設置

2023-03-17 08:11:25

2010-05-17 16:31:04

IIS Request

2009-06-30 10:59:38

fckeditorJSP

2011-06-14 15:39:46

單元測試

2009-09-25 17:03:29

Hibernate是什

2009-12-14 11:29:19

Linux查看命令

2010-04-29 10:15:01

Unix系統

2010-06-17 12:57:27

如何修復Grub

2011-04-06 17:35:17

Access數據庫空記錄

2010-05-07 14:11:06

Unix--Tripw

2009-12-03 16:39:09

phpCB批量轉換

2010-05-17 09:19:03

Subversion
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一级日韩 | 国产午夜精品久久久久 | 国产精品免费一区二区三区 | 国产一区久久 | 精品一区二区av | 亚洲高清在线 | 91久久精品一区二区二区 | 国产精品区一区二区三 | 中文字幕在线第二页 | 一区二区三区精品视频 | 久久精品一 | 精品欧美一区二区三区久久久小说 | 狠狠的干狠狠的操 | 不卡av电影在线播放 | 欧美精品二区 | 精品国产青草久久久久96 | 99精品一区| 精品国产乱码久久久久久图片 | 麻豆91av| 欧美中文字幕一区二区三区 | 二区久久| 国产精品久久久爽爽爽麻豆色哟哟 | 亚洲一区二区免费 | 毛片网站在线观看 | 国产精品福利视频 | 日本黄色大片免费 | 福利精品 | 国产一级片一区二区三区 | 黄色大片网站 | 激情国产视频 | 91久久精品一区 | 成年人免费网站 | 亚洲精品9999 | 成人在线免费观看视频 | 午夜精品久久 | 国产99精品 | 99视频在线播放 | 国产精品国产a级 | 日本一区二区高清不卡 | 久久久久久久国产 | 91久久国产综合久久 |