嚴格意義上的啟動指的是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...