Activity的生命周期& 啟動(dòng)模式

1.Activity的生命周期

生命周期這個(gè)事情,是android工程師最基礎(chǔ)的知識,所以今天要講的是一些不一樣的東西。

1.1 OnStart,OnResume,OnPause,OnStop 他們的區(qū)別是什么?

OnStart & OnStop, 這一對發(fā)生的時(shí)候,頁面已經(jīng)顯示,但是處于backgroud的狀態(tài),所以用戶無法看到。

OnResume & OnPause,發(fā)生在用戶可以看到頁面,也就是從后臺到前臺。

OnPause->OnStop,如果下個(gè)頁面是透明的,OnStop不會被呼叫。

2.Activity的啟動(dòng)flag

4大啟動(dòng)模式,也是最基本的知識,。

只有activity可以啟動(dòng)其他的

application 啟動(dòng)activity,由于沒有歷史棧,需要加flag:FLAG_ACTIVITY_NEW_TASK

這樣這個(gè)activity會存在一個(gè)新task

FLAG_ACTIVITY_NEW_TASK:這個(gè)標(biāo)志同singtask launchmode的效果一樣。

FLAG_ACTIVITY_SINGLE_TOP:這個(gè)標(biāo)志同singletop 效果一樣。

FLAG_ACTIVITY_CLEAR_TOP: 會把在task 棧上面的activity,出棧。

3.intentFilter

intentFilter是用于隱式調(diào)用的,顯示調(diào)用&隱式調(diào)用同時(shí)存在,將以顯示調(diào)用為準(zhǔn)

intentFilter有三個(gè)部分組成:action,category,& data

一個(gè)activity可以有幾組intentFilter,只要匹配一個(gè),就可以啟動(dòng)activity

但是必須同時(shí)瞞住action,category & data的匹配,才能保證activity被啟動(dòng)。

同一個(gè)intentFilter可以有幾個(gè)action,只要滿足一個(gè)就可以,同理category & data也是。

Action:action的字串,必須完全一致,才能算作匹配。

Category:category可以有多個(gè),但是每一個(gè)都必須同 intentFilter的某一個(gè)匹配。Category也可以為空,這樣系統(tǒng)會默認(rèn)為我們加上action.intent.category.DEFAULT 這樣就要求每個(gè)支持隱式調(diào)用的activity,都必須有action.intent.category.DEFAULT

Data:data的匹配規(guī)則跟action相似。只要匹配一個(gè)元素,但是必須使用setdataandType 方法來設(shè)定。Setdata & setType這2個(gè)方法是互斥的。

當(dāng)我們在使用隱式啟動(dòng)activity的時(shí)候,可以先使用PackageManager的resolveActivity 或者Intent的resolveActivity,在查詢的時(shí)候,需要加flag:MATCH_DEFAULT_ONLY

還有一個(gè)特殊的頁面:action = android.intent.action.MAIN ?category=android.intent.category.LAUNCH缺一不可

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容