使用Intent啟動Activity

2021-09-05 21:22:55 字數 2197 閱讀 1094

intent

的最常用的用途是繫結應用程式元件。

intent

用來在應用程式的

activity

間啟動、停止和傳輸。

這一章節中關於啟動新的

activity

的提示,也同樣適用於

service。第8

章可以了解到關於啟動(和建立)

service

的細節。

為了開啟應用程式中不同的畫面(

activity

),呼叫

startactivity

,傳入乙個

intent

,如下面的片段所示:

startactivity(myintent);

intent

既可以顯式的指定類去開啟,也可以包含目標需要執行的動作。在後者的情況下,執行時會選擇

activity

去開啟,使用乙個熟知的處理過程——「

intent

解析」

startactivity

方法查詢、啟動與

intent

最匹配的單一

activity。

當使用startactivity

時,新啟動的

activity

結束是你的應用程式不會接收到任何通知。為了追蹤開啟畫面的反饋,使用

startactivityforresult

方法,在後面會描述更多細節。

顯式啟動新的

activity

你在第2

章已經了解到,應用程式由很多個內部相互聯絡的螢幕——

activity

組成,這些

activity

必須包含在應用程式的

manifest

中。為了連線它們,你可能想要顯式的指定開啟哪個

activity。

為了顯式地選擇乙個

activity

類來啟動,需要建立乙個新的

intent

,指定當前應用程式的上下文和要啟動的

activity

的類。然後傳遞這個

intent

給startactivity

,如下的**片段所示:

intent intent = new intent(myactivity.this, myotheractivity.class);

startactivity(intent);

在呼叫startactivity

之後,新的

activity

(在這個例子裡,是

myotheractivity

)將被建立,並變成可見和活躍狀態,移到

activity

棧的最頂端。

**呼叫新

activity

的finish

方法會關閉它,並從棧中移除。可變通的地方,使用者可以通過裝置的

back

按鈕導航到先前的

activity。

隱式intent

和執行時繫結

隱式intent

是一種讓匿名應用程式元件服務動作請求的機制。當建立乙個新的隱式

intent

時,你指定要執行的動作,作為可選項,你可以提供這個動作所需的資料。

當你使用這個新的隱式

intent

來啟動activity

時,android

會在執行時解析它,找到最適合在指定的資料型別上執行動作的類。這意味著,你可以建立使用其它應用程式的工程,而不需要提前精確地知道你會借用哪個應用程式的功能。

例如,如果你想讓使用者在應用程式裡打**,與其實現乙個新的撥號,不如使用乙個隱式的

intent

來請求乙個在乙個**號碼(

uri表示)上的動作(撥乙個號碼),如下**片段所示:

if (somethingweird && itdontlookgood)

android

解析這個

intent

並啟動乙個提供了能在乙個號碼上執行撥號動作的

activity

,在這裡,是撥號

activity。

一些本地的應用程式提供了在特定資料上執行動作的元件。第三方應用程式,包括你的,也可以註冊來支援新的動作或為本地動作提供一種替代的方法。你會在本章的後面了解到一些本地的動作。

使用Intent啟動Activity

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

使用Intent 啟動活動

intent大致可以分為兩種 顯式intent和隱式intent兩種。使用顯式intent啟動活動通常會使用這個建構函式 intent context context,classcls context引數要求輸入上下文,cls則需要輸入想要啟動的活動 在例項化乙個intent後只需要使用starta...

簡單使用隱式intent 啟動應用

啟動傳送訊息的應用 intent i new intent intent.action send 根據這個引數確定 i.settype text plain i.putextra intent.extra text,getcrimereport i.putextra intent.extra sub...