Activity生命週期和啟動模式

2021-07-25 03:19:36 字數 1565 閱讀 1947

這篇文章已經介紹了生命週期,概括下來就是下面這幅圖

(1)standard:標準模式。每次啟用activity時,都建立activity例項,並放入任務棧,不管這個例項是否存在

(2)singletop:棧頂復用模式。如果就是該activity,則不需要建立,直接呼叫onnewintent方法,其餘情況都要建立activity例項

(3)singletask:棧內復用模式(單例項模式)。如果要啟用的那個activity在任務棧中存在該例項,則不需要建立,只需要把此activity放入棧頂,呼叫onnewintent,並把該activity以上的activity例項都pop

(4)singleinstance:單例項模式。加強版singletask。a啟動的時候會建立新的任務棧,後續a的啟動只會復用

(1)flag_activity_new_task = singletask

(2)flag_activity_single_top = singletop

(3)flag_activity_clear_top:啟動時,同一任務棧位於它上面的activity都會出棧

只有action、data、category三方都匹配,intent才算是匹配成功,進而才能開啟相應的activity。乙個activity若宣告了多個intent filter,只需要匹配任意乙個即可啟動該元件。

(1)action的匹配規則

乙個intent filter中可宣告多個action,intent中的action與其中的任乙個action在字串形式上完全相同(注意,區分大小寫),action方面就匹配成功。可通過setaction方法為intent設定action,也可在構造intent時傳入action。需要注意的是,隱式intent必須指定action。

(2)category的匹配規則

與action和data不同,intent中的category必須都在intent filter中出現才算匹配成功。intent可以不指定category,若intent中未指定category,系統會自動為它帶上「android.intent.category.default」。所以,想要接收implicitly intent的activity都必須在manifest檔案中的intent filter宣告中帶上「android.intent.category.default」。我們可以通過addcategory方法為intent新增category。

(3)data的匹配規則

data可進一步分為uri(由scheme、host、port、path | pathpattern | pathprefix這4部分組成)和mimetype。intent的uri可通過setdata方法設定,mimetype可通過settype方法設定。隱式intent也必須指定data。同action類似,只要intent的data只要與intent filter中的任乙個data宣告完全相同,data方面就匹配成功。

Activity的生命週期和啟動模式

廢話不多說,上activity的生命週期圖 這個在面試的時候經常會被問到哎,真不知道有什麼可以問的 activity從建立到銷毀,正常經過的生命流程就是oncreate onstart onresume onpause onstop onstop ondestroy。但是筒子們在開發的時候,偶會會見...

Activity生命週期

oncreate 設定activity所使用的布局檔案 按鈕繫結 等靜態設定操作 onstart 該activity能被我們看到的時候就會呼叫onstart onresume 能夠獲得使用者焦點 onpause 啟動另外乙個activity的時候就會呼叫第乙個activity的該方法 onstop ...

activity生命週期

乙個activity的啟動順序 oncreate onstart onresume 當另乙個activity啟動時 第乙個activity onpause 第二個activity oncreate onstart onresume 第乙個activity onstop 當返回到第乙個activity...