Activity之Intent隱式啟動PK顯示啟動

2021-07-09 11:51:38 字數 1921 閱讀 9207

嚴格意義上的啟動指的是startactivity(intent),或者帶值返回startactivityforresult(intent)。

本文就activity的兩種跳轉方式具體寫法、特點及用法(使用場合)做一下比較:

intent的中文意思是「意圖,意向」,在android中提供了intent機制來協助應用間的互動與通訊,intent負責對應用中一次操作的動作、動作涉及資料、附加資料進行描述,android則根據此intent的描述,負責找到對應的元件,將 intent傳遞給呼叫的元件,並完成元件的呼叫。intent不僅可用於應用程式之間,也可用於應用程式內部的activity/service之間的互動。因此,可以將intent理解為不同元件之間通訊的「媒介」專門提供元件互相呼叫的相關資訊。

有關七大屬性講解詳見《intent七大屬性》

官方建議使用隱式intent。七大屬性中,除了component屬性為顯式,其他均為隱式。

相比於顯式intent,隱式intnet則含蓄了許多,它並不明確指出我們想要啟動哪乙個活動,而是指定一系列更為抽象的action和category等資訊,然後交由系統去分析這個intent,並幫我們找出合適的活動去啟動。

清單檔案中要為activity註冊

android:name=".secondactivity">

android:name="com.sina.intent01.my_action"/>

android:name="android.intent.category.default" />

intent-filter>

activity>

activity 中 intent filter 的匹配過程 :

如果有多個元件被匹配成功,就會以對話方塊列表的方式讓使用者進行選擇。

每個intent中只能指定乙個action,但卻能指定多個category;類別越多,動作越具體,意圖越明確

在intent新增類別可以新增多個類別,那就要求被匹配的元件必須同時滿足這多個類別,才能匹配成功。操作activity的時候,如果沒有類別,須加上預設類別

當intent匹配成功的元件有多個時,顯示優先順序高的元件,如果優先順序相同,顯示列表讓使用者自己選擇

優先順序從-1000至1000,並且其中乙個必須為負的才有效

注:系統預設的瀏覽器並沒有做出優先順序宣告,其優先順序預設為正數。

intent intent = new intent();

//setclass方法的第乙個引數是乙個context物件

//context是乙個類,activity是context類的子類,也就是說,所有的activity物件,都可以向上轉型為context物件

//setclass函式的第二個引數是乙個class物件,在當前場景下,應該傳入需要被啟動的activity類的class物件,不同包時,寫類名的時候必須帶上包名,否則找不到。

intent.setclass(mainactivity.this, secondactivity.class);

startactivity(intent);

//或者更簡單的寫法,通過帶參建構函式直接傳值

intent intent = new intent(mainactivity.this,secondactivity.class);

startactivity(intent);

利用Intent切換Activity

在主activity中敲入 intent it newintent mainactivity.this,otheractivity.class 將資料傳給新的 activity,如果不傳資料,只是簡單的跳轉,這幾行 可以注釋掉 bundle bundle newbundle bundle.putst...

使用Intent啟動Activity

intent 的最常用的用途是繫結應用程式元件。intent 用來在應用程式的 activity 間啟動 停止和傳輸。這一章節中關於啟動新的 activity 的提示,也同樣適用於 service。第8 章可以了解到關於啟動 和建立 service 的細節。為了開啟應用程式中不同的畫面 activi...

Intent 實現Activity跳轉

一 概述 用intent實現無返回和有返回的activity之間的跳轉 二 無返回的跳轉 firstactivity中 intent intent new intent firstactivity.this,secondactivity.class 傳遞資料到第二個activity startact...