轉(zhuǎn):我對standard向族、singleTop促脉、singleTask和singleInstance四種Activity啟動模式的理解
https://www.cnblogs.com/EX32/p/4623764.html
之前自學(xué)android的時候,單從視頻和書本上對這四種啟動模式僅僅有了初步的字面上的理解。最近實戰(zhàn)了下,也對這四種啟動模式有了比較清晰的概念。
首先說下什么是Activity醉锅,按照我的理解,我們在手機(jī)上看到的每一個頁面都是一個Activity发绢,包括系統(tǒng)的桌面硬耍,也是一個Activity。
要啟動一個Activity有四種模式:standard(標(biāo)準(zhǔn)啟動模式)边酒、singleTop经柴、singleTask、singleInstance甚纲。
注: Aty1_1和Aty2_1為兩個不同的Activity口锭,Aty1_1和Aty1_2為同一個Activity中的不同實例。
1. standard
不同的Activity在同一個棧中介杆,
每次創(chuàng)建新實例的時候鹃操,新實例便會堆放到棧頂。
當(dāng)點返回鍵的時候春哨,便會從棧頂按順序?qū)嵗瞥龡>0V敝翖榭談t退回到桌面。
2. singleTop
不同的Activity在同一個棧中赴背。
① 如果此時Aty1的實例在棧頂椰拒,此時再創(chuàng)建一個新的Aty1并不會成功晶渠。
② 如果Aty_1不在棧頂,此時再創(chuàng)建一個Aty1的實例燃观,會產(chǎn)生一個新的Aty1實例到棧頂褒脯。
當(dāng)點返回鍵的時候,便會從棧頂按順序?qū)嵗瞥龡@禄佟V敝翖榭談t退回到桌面番川。
3. singleTask
不同的Activity在同一個棧中。
① 如果此時Aty1的實例在棧頂脊框,此時再創(chuàng)建一個新的Aty1并不會成功颁督。
② 如果Aty_1不在棧頂,此時再創(chuàng)建一個Aty1的實例浇雹,頁面會返回到任務(wù)棧中存在的Aty1的實例沉御,并將Aty1上面所有的實例移出棧。
當(dāng)點返回鍵的時候昭灵,便會從棧頂按順序?qū)嵗瞥龡7婉伞V敝翖榭談t退回到桌面。
4. singleInstance
不同的Activity 處于不同棧中
① 如果此時Aty1的實例在棧頂虎锚,此時再創(chuàng)建一個新的Aty1并不會成功硫痰。
② 如果此時Aty2的實例還未被創(chuàng)建,則創(chuàng)建的Aty2的實例時會存放到一個新的任務(wù)棧中窜护。
③ 如果此時Aty1的實例已存在且我們在Aty2的頁面中創(chuàng)建新的Aty1實例時,則不會創(chuàng)建新的Aty1實例非春,而是頁面跳轉(zhuǎn)到原來任務(wù)棧中存在的Aty1的實例柱徙,但存放Aty2實例的任務(wù)棧仍然存在
當(dāng)點返回鍵的時候,便會依次銷毀相應(yīng)的任務(wù)棧奇昙,直至任務(wù)棧數(shù)為空則退回到系統(tǒng)桌面护侮。
以上是我對安卓四種Activity啟動模式的理解,如果有不對的地方還望指正储耐。