2011年3月29日 星期二

Activity 的四種不同工作模式

  Activity 在同一個”task" 是以堆疊的方式排放在一起,一般來若沒特別指定”模式”的話,新的Activity 會疊在前一個的上面,當最上面的Activity call finish() or 按下back key 時,該Activity 會被Destroy 掉,疊在下面的那一個會被ReStart.


       多個相同的Activity實体:

       1. Standard mode
                新產生的會疊在最上頭, 最上面舊OnPause -> 新onCreate -> 新onStart -> 新onRescume->舊OnStop 

  2. Single top mode:   
                若設定Single top mode 的那個Activity 不在最top 的堆疊,那start 該個Activity 時,結果與Standard mode 相同。

                若該Activity 在top ,當Start 該Activity時,會在看到同一個Activity OnPause , 接著同一個Activity 就會執行 OnResume

      

    只有一個Activity的實体:

         由於只有一個實体的產生,那重點是在它被疊在stack裡時候,如果有intent 傳來要start 該Activity ,那堆疊會有什麼樣的變化?是不是已經疊在上面的Activity 都會被清除,讓該個Activity 浮上來?
 
      1. Single Task Mode:(該Activity 只產生在該task 內一個實体,不同task 可存在另一個實体)
   當該Activity 被叫到的時候,在它上面疊著的其它Activity 都會被清掉。

       2. Single Instance Mode:(該Activity 產生的時候,只在產生一個新的task,該task 也僅有它這一個Activity,系統中僅這一個實体)  
   當該Activity 被叫到的時候,由於它是獨立的task,所以,在它上面疊著的其它Activity會保留,不會被影響到,因為它們是不同的task。但也因為這樣,所以當我們按back key一路退回去的時候,不會看到該instance 出現在退出的堆疊中。 

沒有留言:

張貼留言