對前一篇Activity的4種加載模式的分析?

Activity有四種加載模式:

  • standard
  • singleTop
  • singleTask
  • singleInstance

設置的位置在AndroidManifest.xml文件中activity元素的android:launchMode屬性


standard模式: 如果從Activity1 intent到Activity1,如果重複intent3次,那麼在棧中就會出現3個Activity1不同的實例。也就是standard模式每次都會產生一個新的實例。

singleTop模式: 如果從 Activity 1 intent到 Activity2,然後在從 Activity2 intent到 Activity1,那就要看棧頂是不是 Activity1,如果是就不用創建新的實例。那麼就intent 到Activity1。如果不是 Activity1就需要創建實例 Activity1。

singleTask模式: 如果從 Ac tivity1 intent到 Activity2,然後在從 Activity2 intent到 Activity1,只要棧裏存在 Activity1,就intent到 Activity1,不創建 Activity1新實例。

singleInstance模式:

     這種和前面幾中有所不同。前幾種只在一個任務中。只是實例化的方式不同。 讓這個模式下的Activity單獨在一個task棧中。這個棧只有一個Activity。

     引用前一篇文章中的例子:現成的例子是google地圖。比如我有一個應用是導遊方面的,其中調用的google地圖Activity。那麼現在我比如按home(後臺 activity onstop,back是finish)鍵,然後到應用列表中打開google地圖,你會發現顯示的就是剛纔的地圖,實際上是同一個Activity。
     如果使用上面三種模式,是無法實現這個需求的。google地圖應用中有多個上下文Activity,比如路線查詢等的,導遊應用也有一些上下文Activity。在各自應用中回退要回退到各自的上下文Activity中。


注: standard模式和singleTop模式會創建新的實例,singleTask模式和singleInstance模式不會創建新實例。 standard模式和singleTop模式和 singleTask模式的activity的 taskid是同一個。singleInstance模式 ,讓這個模式下的Activity單獨在一個task棧中。這個棧只有一個Activity。

 

 

 

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