啟動(dòng)模式分為4種录平,分別為
- Standrad
- SingleTop
- SingleTask
- SingleIntance
Standrad
就是默認(rèn)的模式,啟動(dòng)多少個(gè)就是多少個(gè)
SingleTop
SingleTop 需要這樣理解舞虱,SingleOnTop,當(dāng)棧頂是我的時(shí)候,就不再創(chuàng)建新的實(shí)例搭综。
例如掰伸,ABCD,啟動(dòng)D培漏,還是ABCD溪厘。如果是ABDC,啟動(dòng)D牌柄,最后就變成ABDCD畸悬。
SingleTask
SingleOnTask的意思,我在這個(gè)任務(wù)棧是唯一的珊佣。需要注意的是蹋宦,這貨啟動(dòng)是默認(rèn)自帶clearTop效果的,也就是會(huì)把在它之后的Activity都清楚掉咒锻。
例如妆档,任務(wù)棧中有ABDC言津,啟動(dòng)D入篮,將會(huì)變成ABD,C將會(huì)被自動(dòng)推出匿沛。
SingleIntance
這個(gè)可以看做是SingleTask加強(qiáng)版敦捧,使用這個(gè)屬性的Activity须板,將會(huì)被單獨(dú)放在一個(gè)任務(wù)棧中,然后這個(gè)Activity在進(jìn)程中都是唯一個(gè)的
一個(gè)栗子
A 屬于棧1,BC 屬于棧2,A 為standard
模式,BC都是為singleTask
模式兢卵。啟動(dòng)方式為這樣 A->B->C->A->B习瑰。這樣啟動(dòng)的時(shí)候,用戶按下返回鍵就是桌面了秽荤。問(wèn)題主要是在最后啟動(dòng)的B上甜奄,singleTask 自帶clearTop 屬性柠横,將會(huì)把CA清除出去,A 和 B 又不是在相同的任務(wù)棧上课兄,所以就回到桌面了牍氛。
啟動(dòng)Activity的一些常用的FLAG
FLAG_ACTIVITY_NEW_TASK
其實(shí)就是SingleTask
模式
FLAG_ACTIVITY_SINGLE_TOP
就是singletop
FLAG_ACTIVITY_CLEAR_TOP
清除在他最子上的活動(dòng),配合NEW_TASK
使用
FLAG_ACTIVITY_EXECULE_FROM_RECENTS
不出現(xiàn)在最近應(yīng)用列表中
小坑
singleTop
的Activity烟阐,用startActivityForResult
啟動(dòng)的時(shí)候是立刻返回值的搬俊,但是是錯(cuò)誤的result