Activity 任務棧和它的啟動模式

2021-10-25 03:22:52 字數 3794 閱讀 4692

1.1、standard:標準模式,這也是系統的預設模式

1.2、singletop:棧頂復用模式

1.3、singletask:棧內復用模式

1.4、singleinstance:單例項模式

1.5、activity 的任務棧

1.6、給 activity 指定啟動模式

android:name=

".secondactivity"

android:configchanges=

"screenlayout"

android:label=

android:launchmode=

"singletask"

/>

intent intent =

newintent()

; intent.

setclass

(mainactivity

.this

,secondactivity

.class);

intent.

addflags

(intent

.flag_activity_new_task)

;startactivity

(intent)

;

優先順序上,第二種高於第一種,當兩種同時存在,以第二種為準。

限定範圍有所不同,比如,第一種方式無法直接為 activity 設定 flag_activity_clear_top 標識,而第二種方式無法為 activity 指定 singleinstance 模式。

1.7、小栗子

intent.flag_activity_new_task:為 activity 指定 singletask 啟動模式。

intent.flag_activity_single_top:為 activity 指定 singletop 啟動模式。

intent.flag_activity_clear_top:當啟動具有此標記位的 activity時,在同一任務棧中的所有位於它之上的 activity 都要出棧。

intent.flag_activity_exclude_from_recents:具有此標記的 activity 不會出現在歷史 activity 的列表中,相當於 xml 中 activity 的 android:excludefromrecents=「true」 屬性。

3.1、顯式呼叫

intent intent =

newintent

(mainactivity

.this

,secondactivity

.class);

startactivity

(intent)

;

3.2、隱式呼叫3.2.1、intent-filter3.2.2、action 匹配規則3.2.3、category 匹配規則

3.2.4、data 匹配規則(關於 data 還存在疑問,僅供參考)

:/

/:/[

|<

|pathprefix>

|]// 比如

scheme:uri 中的模式,比如 http、file、content 等,如果 uri 中沒有指定 scheme,那麼整個 uri 的其他引數無效,這也意味著 uri 是無效的。

host:uri 的主機名,比如 www.baidu.com,如果 host 未指定,那麼整個 uri 的其他引數無效,這也意味著 uri 是無效的。

port:uri 中的埠號,比如 80,僅當 uri 中指定了 scheme 和 host 引數的時候 port 引數才是有意義的。

path、pathprefix 和 pathpattern:這三個引數表述路徑資訊。

path表示完整的路徑資訊。

pathprefix表示路徑的字首資訊。

pathpattern也表示完整的路徑資訊,但是它裡面可以包含萬用字元 「*」,「*」 表示 0 個或多個任意字元,需要注意的是,由於正規表示式的規範,如果想要表示真實的字串,那麼 「*」 要寫成 「\\*」,"\"要寫成 「\\\\」。

3.2.5、系統內部 activity

這裡沒有做版本適配,如動態許可權申請。

撥打**,

intent.

setaction

("android.intent.action.call");

intent.

setdata

(uri

.parse

("tel://13600000000"))

;

開啟瀏覽器

intent.

setaction

("android.intent.action.view");

intent.

setdata

(uri

.parse

(""))

;

intent.

setaction

("android.intent.action.view");

intent.

setdataandtype

(uri

.parse

("file:///mnt/sdcard/adele - rolling in the deep.***"),

"audio/*"

);

intent.

setaction

("android.intent.action.view");

intent.

setdataandtype

(uri

.parse

("file:///mnt/sdcard/1.mp4"),

"video/*"

);

顯示

activity的任務棧

當activity被建立出來的時候,系統就分給他乙個任務棧,task stack.用於存放activity.任務棧是用來描述activity當前的狀態.內部實現是乙個鍊錶.後進先出.複雜的任務棧.假設任務棧有browseractiviity.webkit.避免出現太多的activity.節約記憶體,...

Activity任務和返回棧

1,介紹 任務是指在執行特定作業時與使用者互動的一系列 activity。這些 activity 按照各自的開啟順序排列在堆疊 即返回棧 中 任務棧的作用是用來維護activity,開啟乙個activity 進棧,關閉乙個activity叫出棧 一般情況乙個應用程式對應乙個任務棧我們操作的activ...

解釋activity棧 activity的載入模式

activity棧 activity棧是乙個先進先出 包含所有正在執行的activity的佇列。乙個activity的狀態,對於開發者來說是無法控制的,是由系統決定的。那麼activity是按照什麼邏輯來運作的呢,這就要了解activity棧了,每個activity的狀態都是由它在activity棧...