android中提供了intent機制來協助應用間的互動與通訊,intent負責對應用中一次操作的動作、動作涉及資料、附加資料進行描述,android則根據此intent的描述,負責找到對應的元件,將 intent傳遞給呼叫的元件,並完成元件的呼叫。
intent不僅可用於應用程式之間,也可用於應用程式內部的activity/service/broadcastreceiver之間的互動。也可以說---- intent是同乙個或不同的應用中的元件之間的訊息傳遞的媒介。因此,intent在這裡起著乙個**中介的作用,專門提供元件互相呼叫的相關資訊,實現呼叫者與被呼叫者之間的解耦。
簡而言之:intent用來啟用元件;攜帶資訊。
在sdk中給出了intent作用的表現形式為:
通過context.startactivity() oractivity.startactivityforresult() 啟動乙個activity;
通過 context.startservice() 啟動乙個服務,或者通過context.bindservice() 和後台服務互動;
context.sendbroadcast(),context.sendorderedbroadcast(),
context.sendstickybroadcast()) 發給broadcast receivers。
activity的跳轉需要建立intent物件,通過設定intent物件的引數指定要跳轉activity。activity跳轉一共有兩類:一類為顯式意圖;一類為隱式意圖。
通過設定activity的包名和類名實現跳轉,稱為顯式意圖
通過指定動作實現跳轉,稱為隱式意圖
顯式意圖
隱式意圖
要讓乙個activity可以被隱式啟動,那麼要在清單檔案中對跳轉到的activity(也就是twoactivity)進行配置。在清單檔案的activity節點中設定intent-filter子節點,並配置action和category。(如果不配置的話,只能被顯式啟動,如果配置了後,也可以被隱式啟動)
o action 指定動作:可以自定義,可以使用系統自帶的。
o data 指定資料:操作什麼內容。運算元據的字首必須是example
o category 類別:是為某一種類定義的,一般使用預設類別即可
隱式意圖跳轉至指定secondactivity
/**
* 隱式啟動secondactivity
*/public void click3(view v)
備註:當啟動activity的時候,系統會在所有清單檔案中尋找與我們建立的intent匹配的intent-filter,找到則啟動,找不到則拋異常
隱式意圖跳轉至指定的系統中的activity
示例1:隱式跳轉至打**activity
/** * 隱式跳轉至打**activity
*/public void click4(view v)
**原始碼中的filter
示例2:跳轉撥號器介面
/*** 隱式啟動撥號器
*/public void click3(view v)
如果在清單檔案中定義data的時候,新增了android:mimetype,操作如下:
在**中就需要指定mimetype
public void click5(view v)
備註:settype和setdata 不能共存,所以要使用共存的setdataandtype方法。
案例:跳轉到瀏覽器怎麼做呢?
/**
* 顯式跳轉至瀏覽器
*/public void click6(view v)
/*** 隱式跳轉至瀏覽器
*/public void click7(view v)
當多個瀏覽器的時候,在顯式的時候,直接啟動了,只能啟動乙個瀏覽器;在隱式的時候,可以讓選擇。
應用場景
1、啟動同一應用中的activity,用顯式
2、啟動不同應用中的activity,用隱式
顯式啟動效率高於隱式
如果系統找到了多個intent-filter與程式設計師建立的intent匹配,那麼就會彈出對話方塊,列舉所有匹配的activity,讓使用者選擇。比如:手機上安裝多個瀏覽器時候。
listactivity與activity的區別
listactivity實際上是listview和activity的結合體。也就是說,乙個listactivity就是只包含乙個listview元件的activity。在listactivity類內部通過 來建立listview物件,因此,使用listactivity並不需要使用xml布局檔案來定義...
Intent實現頁面跳轉
設定文字內容 mytext.settext 我的第乙個textview 1.第乙個頁面 生成乙個intent物件 intent intent new intent 傳遞資料 intent.putextra text 123456 packagecontext當前頁面 cls 跳轉的也頁面 inten...
Intent 實現Activity跳轉
一 概述 用intent實現無返回和有返回的activity之間的跳轉 二 無返回的跳轉 firstactivity中 intent intent new intent firstactivity.this,secondactivity.class 傳遞資料到第二個activity startact...