activity啓動模式的理解

首先說下什麼是Activity,按照我的理解,我們在手機上看到的每一個頁面都是一個Activity,包括系統的桌面,也是一個Activity。

要啓動一個Activity有四種模式:standard(標準啓動模式)、singleTop、singleTask、singleInstance。

 

注: Aty1_1和Aty2_1爲兩個不同的Activity,Aty1_1和Aty1_2爲同一個Activity中的不同實例。

1. standard

    不同的Activity在同一個棧中,

    每次創建新實例的時候,新實例便會堆放到棧頂。

    

      當點返回鍵的時候,便會從棧頂按順序將實例移除棧。直至棧爲空則退回到桌面。

 

2. singleTop

    不同的Activity在同一個棧中。   

    ① 如果此時Aty1的實例在棧頂,此時再創建一個新的Aty1並不會成功。

    

    ② 如果Aty_1不在棧頂,此時再創建一個Aty1的實例,會產生一個新的Aty1實例到棧頂。

    

    當點返回鍵的時候,便會從棧頂按順序將實例移除棧。直至棧爲空則退回到桌面。

    

3. singleTask

    不同的Activity在同一個棧中。

    ① 如果此時Aty1的實例在棧頂,此時再創建一個新的Aty1並不會成功。

  

    ② 如果Aty_1不在棧頂,此時再創建一個Aty1的實例,頁面會返回到任務棧中存在的Aty1的實例,並將Aty1上面所有的實例移出棧。

    

    當點返回鍵的時候,便會從棧頂按順序將實例移除棧。直至棧爲空則退回到桌面。

 

4. singleInstance

    不同的Activity 處於不同棧中

    ① 如果此時Aty1的實例在棧頂,此時再創建一個新的Aty1並不會成功。

   

    ② 如果此時Aty2的實例還未被創建,則創建的Aty2的實例時會存放到一個新的任務棧中。

    

    ③ 如果此時Aty1的實例已存在且我們在Aty2的頁面中創建新的Aty1實例時,則不會創建新的Aty1實例,而是頁面跳轉到原來任務棧中存在的Aty1的實例,但存放Aty2實例的任務棧仍然存在

    

      

    當點返回鍵的時候,便會依次銷燬相應的任務棧,直至任務棧數爲空則退回到系統桌面。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章