Acitivity啟動模式

在AndroidManifest.xml文件中可以修改activity的啟動模式,默認(rèn)是standard標(biāo)準(zhǔn)模式,另外還有singleTop、singleInstance、singleTask三種,各個啟動模式的區(qū)別在于啟動activity時,是否創(chuàng)建新的任務(wù)棧,是否創(chuàng)建新的實例。
為便于觀察,除mainActivity之外,新建一個newActivity,并在兩個頁面上各自添加一個textview顯示當(dāng)前頁面所在任務(wù)棧的taskId和當(dāng)前實例id,每個頁面添加兩個按鈕,點擊后分別跳轉(zhuǎn)到mainActivity和newActivity

standard標(biāo)準(zhǔn)模式
  • 啟動程序 -->顯示main頁面-->taskId : 58,instanceId:@58bc6ee
  • 點擊main按鈕-->顯示main頁面-->taskId : 58,instanceId:@1289aba
  • 點擊new按鈕-->顯示new 頁面-->taskId : 58,instanceId:@925c77d
  • 點擊main按鈕-->顯示main頁面-->taskId : 58,instanceId:@9a71cc7
  • 點擊new按鈕-->顯示new 頁面-->taskId : 58,instanceId:@9a32a43
  • 點擊后退按鈕-->顯示main頁面-->taskId : 58,instanceId:@9a71cc7
  • 點擊后退按鈕-->顯示new 頁面-->taskId : 58,instanceId:@925c77d
  • 點擊后退按鈕-->顯示main頁面-->taskId : 58,instanceId:@1289aba
  • 點擊后退按鈕-->顯示main頁面-->taskId : 58,instanceId:@58bc6ee
  • 點擊后退按鈕-->回到桌面
    由此可見,標(biāo)準(zhǔn)模式下,跳轉(zhuǎn)activity時只創(chuàng)建一個任務(wù)棧,每次跳轉(zhuǎn)都創(chuàng)建新的實例。
singleTop模式
  • 啟動程序 -->顯示main頁面-->taskId : 59,instanceId:@58bc6ee
  • 點擊main按鈕-->顯示main頁面-->taskId : 59,instanceId:@ 58bc6ee
  • 點擊new按鈕-->顯示new 頁面-->taskId : 59,instanceId:@72c2561
  • 點擊new按鈕-->顯示new 頁面-->taskId : 59,instanceId:@72c2561
  • 點擊main按鈕-->顯示main頁面-->taskId : 59,instanceId:@ f2db93d
  • 點擊main按鈕-->顯示main頁面-->taskId : 59,instanceId:@ f2db93d
  • 點擊new按鈕-->顯示new 頁面-->taskId : 59,instanceId:@69defd5
  • 點擊new按鈕-->顯示new 頁面-->taskId : 59,instanceId:@69defd5
  • 點擊后退按鈕-->顯示main頁面-->taskId : 59,instanceId:@f2db93d
  • 點擊后退按鈕-->顯示new頁面-->taskId : 59,instanceId:@72c2561
  • 點擊后退按鈕-->顯示main頁面-->taskId : 59,instanceId:@58bc6ee
  • 點擊后退按鈕-->回到桌面
    在singleTop模式下,跳轉(zhuǎn)activity時只創(chuàng)建一個任務(wù)棧,與標(biāo)準(zhǔn)模式不同之處在于:如果被啟動的activity處于棧頂,則不創(chuàng)建新實例,如果不處于棧頂,則會創(chuàng)建新實例
singleTask模式
  • 啟動程序 -->顯示main頁面-->taskId : 60,instanceId:@58bc6ee
  • 點擊main按鈕-->顯示main頁面-->taskId : 60,instanceId:@ 58bc6ee
  • 點擊new按鈕-->顯示new 頁面-->taskId : 60,instanceId:@72c2561
  • 點擊new按鈕-->顯示new 頁面-->taskId : 60,instanceId:@72c2561
  • 點擊main按鈕-->顯示main頁面-->taskId : 60,instanceId:@58bc6ee
  • 點擊main按鈕-->顯示main頁面-->taskId : 60,instanceId:@58bc6ee
  • 點擊new按鈕-->顯示new 頁面-->taskId : 60,instanceId:@f2db93d
  • 點擊new按鈕-->顯示new 頁面-->taskId : 60,instanceId:@f2db93d
  • 點擊后退按鈕-->顯示main頁面-->taskId : 60,instanceId:@58bc6ee
  • 點擊后退按鈕-->回到桌面
    singleTask模式下,啟動新activity只會創(chuàng)建一個任務(wù)棧,在創(chuàng)建新實例的時候,會把同一個activity之前的實例彈出,所以在點擊后退按鈕的時候,newActivity不會再次顯示。
singleInstance模式
  • 啟動程序 -->顯示main頁面-->taskId : 61,instanceId:@58bc6ee
  • 點擊main按鈕-->顯示main頁面-->taskId : 61,instanceId:@58bc6ee
  • 點擊new按鈕-->顯示new 頁面-->taskId : 62,instanceId:@72c2561
  • 點擊new按鈕-->顯示new 頁面-->taskId : 62,instanceId:@72c2561
  • 點擊main按鈕-->顯示main頁面-->taskId : 61,instanceId:@58bc6ee
  • 點擊main按鈕-->顯示main頁面-->taskId : 61,instanceId:@58bc6ee
  • 點擊new按鈕-->顯示new 頁面-->taskId : 62,instanceId:@f2db93d
  • 點擊new按鈕-->顯示new 頁面-->taskId : 62,instanceId:@f2db93d
  • 點擊后退按鈕-->顯示main頁面-->taskId : 61,instanceId:@58bc6ee
  • 點擊后退按鈕-->回到桌面
    singleInstance模式下,一個任務(wù)棧只存在一個實例,切換activity的時候會切換任務(wù)棧。

還不知道在實際項目中怎么應(yīng)用,希望后續(xù)可以了解到

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • ¥開啟¥ 【iAPP實現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程,因...
    小菜c閱讀 7,391評論 0 17
  • 1.什么是Activity?問的不太多,說點有深度的 四大組件之一,一般的,一個用戶交互界面對應(yīng)一個activit...
    JoonyLee閱讀 5,871評論 2 51
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,366評論 25 708
  • 圖片發(fā)自簡書AppBY:茶茶 微博:宋梓顏PINK 如果這都不算愛,我有什么好悲哀 閃耀的燈光,完美的舞臺,底下嘈...
    宋梓顏PINK閱讀 495評論 0 0
  • 因為平凡 所以我愛做夢 因為思念 所以我仰望星空 因為時代 所以我們不約而同 因為夢想 所以我們向幸福奔走 這紙糊...
    林菲兒閱讀 329評論 0 1

友情鏈接更多精彩內(nèi)容