Android中Activity的啟動模式

2021-07-23 14:49:46 字數 858 閱讀 6542

之所以寫這篇部落格,也是由於博主本人對這個知識點掌握的不是很牢靠,總是把activity弄混,這裡系統的介紹一下,也旨在為大家分享。

正如我們所看到的那樣,google的那些大神門不會無緣無辜的搞出乙個啟動模式來,存在即是合理的。那麼,具體原因到底是什麼呢?

其實很簡單,android中預設的啟動模式,多次啟動同乙個activity,系統會重複的建立多個例項,對於記憶體如此重要且稀少的手機來說,這是不是忒別傻,於是乎,android的那些開發者們就設計出了啟動模式來解決這個問題

在目前的版本中,有四種啟動模式:standard,singletop,singletask和singleinstance。這四種啟動模式有什麼具體的區別呢?

這個是系統預設的啟動模式,每次我們啟動乙個activity的時候,無論這個activity的例項是否存在,系統都會建立乙個新的例項。

如我我們採用這種模式去啟動乙個activity,如果新的activity已經位於任務棧的棧頂,那麼此activity不會被重新建立。因此此時oncreate和onstart方法不會被系統呼叫,因為它並沒有發生改變,如果此activity的例項已經存在但是這個例項不是位於任務棧的棧頂,那麼這個activity的例項仍會重新建立。

這種模式下,只要要啟動的activity在乙個棧中存在,那麼多次啟動該activity都不會重新建立例項。屬於單例模式

這個模式是singletask的加強版,它具有singletask模式的所有特點,此外,它最獨特的一點在於:這種模式的activity只能單獨的位於乙個任務棧中。舉個理智,比如乙個activitytest,如果test是singletask,當啟動test後,系統會為它建立乙個新的任務棧,然後a獨自在這個新的任務棧中,由於棧內復用的原則,後續的請求均不會建立新的activity。

android基本程式單元Activity

activity提供了和使用者互動的視覺化介面,建立乙個activity一般都繼承了activity,覆蓋了activity的oncreat方法.在該方法中呼叫setcontentview的方法展示要顯示的檢視.呼叫findviewbyid方法例項化元件.activity只有在清單檔案中宣告才能使用...

android 顯式 隱式啟動activity

android啟動activity分為顯式啟動和隱式啟動。顯式啟動時,指定被啟動activity類,系統啟動被指定的activity類。隱式啟動時,指定action category,系統會拿action category去androidmanifest.xml中匹配,匹配的activity啟動。某...

listactivity與activity的區別

listactivity實際上是listview和activity的結合體。也就是說,乙個listactivity就是只包含乙個listview元件的activity。在listactivity類內部通過 來建立listview物件,因此,使用listactivity並不需要使用xml布局檔案來定義...