Activity的啟動模式和橫豎屏切換

2021-07-06 06:44:10 字數 1311 閱讀 2408

一. activity 依靠任務棧,按照先進後出的原則,記錄和維護當前開啟的activity。android為了維護使用者更好的體驗,提供了以下4種啟動模式:

1.standard的啟動模式:每開啟乙個activity,就會往棧中增加乙個activity,不考慮是否有重複的activity被一再開啟。

2.singletop的啟動模式:如果發現任務棧的棧頂已經存在這個activity,再去開啟activity的時候,不會去重新建立新的activity,而是復用已經存在的activity。這樣可以避免同乙個介面被重複的開啟。一般瀏覽器,瀏覽器書籤,發簡訊會用到此模式.

3.singletask的啟動模式:開啟乙個activity的時候,檢查任務棧中是否存在這個activity的例項。如果存在,則清空這個任務棧activity上的所有activity,復用這個activity. 為了避免建立過多的瀏覽器activity,瀏覽器一般會採用這種模式,節約記憶體空間和cpu資源。

4.singleinstance 模式:開啟乙個新的任務棧,任務棧裡面只有乙個activity的例項存在。如果這個activity被開啟,把這個任務棧放在前面,如果開啟了新的別的activity,則新的別的activiy所在的任務棧會被放在前面。如打**,來電的activity。

二. activity的啟動模式的配置:

在androidmanifest.xml中,在對應的activity中配置:

android:launchmode=」standard/singletop/singletask/singleinstance」即可。

三.activity橫豎屏切換的生命週期:

1.生命週期:當啟動乙個activity時候,系統會自動去呼叫如下方法:oncreate==>onstart==>onresume, 而當開始切換為橫屏/豎屏的時候,會呼叫:onpause==>onstop==>ondestroy==>oncreate==>onstart==>onresume。說明之前的activity被銷毀,又開啟了乙個新的activity.

2..如果想要橫豎屏切換不改變activity的生命週期(如一些遊戲介面),解決方案有兩種:

第一種:直接定義好螢幕是橫屏還是豎屏:在androidmanifest.xml中,對應的activity中配置android:screenorientation=」landscape/portrait」 ===》定義好橫豎屏

第二種:還是在androidmanifest.xml中配置:最後乙個屬性screensize是針對4.0以上高版本增加的。而低版本的只需要設定前面2個引數即可。android:configchanges=」orientation|keyboardhidden|screensize」

activity 啟動模式

在android的中activity 有4種啟動方式 standard singletop singletask singleinstance 下面就分輕重點講講這些啟動方式。1 standard啟動方式 這種方式也是系統預設的。說的簡單點,我們在使用startactivity 方法的時候,系統就會...

activity啟動模式

1 對於使用standard 模式的活動,系統不會在乎這個活動是否已經在返回棧中存在,每次啟動都會建立該活動的乙個新的例項。例如a啟動a,a再接著啟動a,a繼續啟動a,然後再分別出棧,如圖所示 2 當活動的啟動模式指定為 singletop,在啟動活動時如果發現返回棧的棧頂已經是該活動,則認為可以直...

Activity啟動模式

兩種方式可以定義activity啟動模式 manifest intent intent定義的啟動模式優先於manifest 不管activity執行在乙個新的任務還是與啟動它的activity同樣的任務,返回鍵總是把使用者帶到之前的activity。然而,如果啟動乙個singletask的activ...