Android Activity 啟動模式詳解

2021-06-18 10:17:40 字數 1837 閱讀 1080

最近有群裡的朋友問我 activity的四種啟動模式分別是什麼意思? 當初因為專案比較忙,草草的解釋了下, api文件中說的也只是一般,在這裡就小記一下吧,以便有更多的朋友對activity啟動模式了解深刻一點。度娘的時候 就可以找得到不需要在 問人了。如果不了解的話,簡單的幾句也說不清晰。

activity 四種啟動模式,分別為:standard 、singletop、singletask、singleinstance。

一 :standard 模式:這個就沒有什麼好說的了,android預設activity啟動的模式 就是 standard,如果有3個 activity,act1,act2,act3, 如果從act1 啟動到act2 ,在啟動到act3,那麼android 的任務棧(task stack)分別為 act1、act2、act3,act3 在棧頂,如果此時按手機返回鍵,則需要返回3次才能返回到桌面(假設是從桌面啟動的demo),任務棧分銷毀掉 act3,act2,最後act1 。

二 :singletop模式:

實驗效果:

singletop模式:該啟動模式和standard模式相差不多,任務棧分配也很相似,如:現有 act1,act 2,在act2 清單檔案中配置 android:launchmode="singletop" ,其他都是預設standard 模式, 若從桌面啟動該實驗demo,從act 1,到act2 ,那麼任務棧則分配為,act1,act2,此時該任務棧和 standard 模式任務棧分配則完全相同,接下來則說明不同的地方,如果在act2 介面中 啟動 到act1, 此時的 任務棧 情況則為 act1,act2,act1,在由act1 啟動到act2,在啟動到act2,進行多次啟動,(在act2介面)任務棧的情況則為,act1,act2,act1,act2,棧頂的act2 則不會重新建立,則會復用act2 該 activit, 依次類推。

理論知識:

singletop,如果任務棧的棧頂元素是要被啟用的元件,不會建立新的activity放在任務棧,而是會復用棧頂的activity。 如果發現棧頂的元素不是要啟用的activity,就會建立新的activity 放置到任務棧裡面

singletop模式應用場景 :

三  

singletask 模式 :

實驗效果 相差不大,實驗內容就不多說了,自己可以寫個小demo,兩個activity,每個activiy 有兩個button,可以相互啟動 打日誌去動手檢視,會理解更加深刻,可以參照著 singletop模式去實驗,以下只是講解下 和singletop的區別:

區別如下:(理論知識)

singletask 操作模式,一般和singletop操作模式類似,如果他發現任務棧裡面已經有了要啟動的這個activity,他會清空這個activity所在的任務棧上面的所有activiy,然後直接復用這個已經存在的activity 。

應用場景:

四 :   

singleinstance 模式 :

直接理論知識吧」:

singleinstance操作模式會新開啟乙個任務棧,跟其他普通activity不是 同乙個任務棧,比較牛,他的模式流程是 首先要新開啟乙個新的任務棧把要啟用的activity放置到新的 任務棧裡,這個任務棧裡面只有且 只有乙個例項,也比較極端吧。說比較極端也跟他的應用場景有關係。

應用場景 :

說這些到底有神馬用呢,因為啊,大部分公司面試的時候 都好問這一口,問什麼鳥問題呢,大致是要問你,android的啟動模式跟程序 有沒有關係,你說有什麼關係嘞,鳥毛的關係都木有,程序是程序, 任務棧是管理activity的,你說有關係嘛,當然了沒關係就是有關係咯,有關係就是沒關係咯,但是同時呢,這些啟動模式也相當的重要哇,這篇文章只是適用於新盆友使用咯,當然老朋友也可以看看啊,提提意見啥的,大家一起進步,但願能幫助一些猿古人類吧,哈哈!

android activity啟動模式

1.標準模式 standrad 沒啟動乙個activity,都會建立乙個activity例項,放入回退棧的內部 2.單頂模式 singletop 當啟動launchmode是 singletop的時候,系統會先判斷棧頂是不是要啟動的那個activity例項,如果是,則不會建立新的例項,直接讓棧頂直接...

Android Activity啟動模式

在androidmanifest.xml中配置 android name mainactivity android launchmode standard 有以下四種 standard 預設模式,每次通過intent啟動activity時都會建立乙個新的activity例項,並放入任務棧中。sing...

android Activity切換動畫

今天準備比賽的時候 遇到了這個問題。查了些資料總結了下。主要是通過 android theme 標籤來實現 android theme style 那麼就需要自己寫style風格檔案 如下 這裡之所以寫成2style個是為了解耦然後自己寫下anim anim enter anim anim exit...