activity的四種啓動模式

                   activity的四種啓動模式

         在開始學習之前,我們必須知道一些事情

          ①:我們平常所說的 task stack(任務棧),是針對於activity而言的

          ②:任務棧其實就是一個後進先出的鏈表,記錄和維護了當前開啓的activity。

                  一般情況下,退出一個activity,就是把這個activity從任務棧棧頂移除.

          ③:如果棧頂空了,任務棧將會被回收,應用程序關閉,但,注意!! -- 進程其實還是存在的,等待其他任務進 

                入該線程.

標準模式】  ---  一般情況

        標準模式也是默認模式,在沒有指定打開方式的時候默認使用標準模式

        我們來做個程序實驗一下,首先我們做兩個activity

        界面如下圖:

        

        

         在配置文件中配置啓動模式

        

         這時,我們點擊的順序爲:第二個activity-->第一個activity-->第一個activity

         此時在任務棧中的情況爲

        

              我們點擊模擬器/真機的返回鍵,依次出現的界面依次爲:

               第一個activity(點擊前)-->第一個activity(點擊一次)-->第二個activity(第二次點擊)

               -->第一個activity(第三次點擊)-->返回應用程序界面(第四次點擊)             

              總結:每發送一個請求都會打開一個相應的activity,即使它已經重複,但依然要打開新的activity


singleTop】  ---  特殊情況

     singleTOP,這種模式和標準模式的區別在於:當你發起一個開啓activity的請求時,它會第一時間去任務棧的最頂端查找,如果你要打開的是activity和頂棧中的activity一致時,它不會再次開啓,值得注意的是,只要你請求打開的不是頂棧中的activity它都會開啓一個新的activity,不管它之前是否打開過,是否存在

         依然是上個案例中用到的例子,這次我們把啓動模式設置爲下圖所示:

         

      此時我們打開應用,點擊Bution的順序爲

      第二個activity --> 第一個activity --> 第一個activity

      那麼,在任務棧中的爲:

      

          當我們連續兩次點擊activity01時,它只會開啓一個

          我們點擊模擬器/真機的返回鍵,依次出現的界面依次爲:

               第一個activity(點擊前)-->第二個activity(第一次點擊)

               -->第一個activity(第二次點擊)-->返回應用程序界面(第三次點擊)


 singleTask】  ---  特殊情況

     singleTask  ---  它的作用是,當你發送一個啓動activity A的請求時,它會先去任務棧中去查找是否存在你要開啓的activity A,如果有,清空這個任務棧中activity A上面的所有的activity,複用activity A

     現在我們把配置文件中的activity啓動模式改爲

     

   我們發佈項目,然後打開app,點擊Button的順序爲:

      第二個activity -->  第一個activity 

      那麼此時在任務棧中的情況爲:

     

         所以我們點擊一次後退鍵即可退出程序


  singleInstance】  ---   極特殊

    singleInstance  ---  它是一種及其特殊的啓動方式,使用該啓動模式的activity將會獨自創建一個任務棧,這個任務棧中只存放一個該activity的實例,根據用戶點擊的順序對所有的任務棧進行排序

       也就是說:如果activity01被開啓,把activity01所在的任務棧放在最前面,如果此時又開啓了新的activity02,那麼activity02所在任務棧會被放置在activity01前面

     

       我們來舉個例子,現在我們把配置文件中activity的啓動模式改爲下圖所示:

     

         那麼,我們將項目部署下,打開app --- > 進入activity01界面

         點擊進入第一個activity,我們發現頁面並沒有任何反應,而當我們點擊進入第二個activity,此時應用的反應如同開啓了一個新的app似的,很明顯第一個activity的界面先是縮小,然後activity02出現。

        此時的任務棧中的情形如圖:

       

             若我們再點擊進入第一個activity,

            

           也就是說,你想看到誰,誰就被放在前方,好似插隊一般,把剛點擊的activity放在隊伍的最前方

           不管點擊幾次Button我們只需要點擊兩次返回,即可關閉程序

         

            以上就是我對activity4種啓動模式的理解,希望可以幫到你

            歡迎轉載,請註明出處,謝謝

    

發佈了67 篇原創文章 · 獲贊 51 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章