activity跳轉Intent.setFlags的作用

FLAG_ACTIVITY_CLEAR_TOP:
這跟上面把B的Launch mode設置成singleTask類似。

FLAG_ACTIVITY_NEW_TASK:
沒有設置Task affinity新開任務棧,
例如現(xiàn)在棧1的情況是:A B C。C通過intent跳轉到D,并且這個intent添加了FLAG_ACTIVITY_NEW_TASK標記,如果D這個Activity在Manifest.xml中的聲明中添加了Task affinity,并且和棧1的affinity不同,系統(tǒng)首先會查找有沒有和D的Task affinity相同的task棧存在,如果有存在,將D壓入那個棧,如果不存在則會新建一個D的affinity的棧將其壓入。如果D的Task affinity默認沒有設置,或者和棧1的affinity相同,則會把其壓入棧1,變成:A B C D,這樣就和不加FLAG_ACTIVITY_NEW_TASK標記效果是一樣的了。注意如果試圖從非activity的非正常途徑啟動一個activity,比如從一個service中啟動一個activity,則intent必須要添加FLAG_ACTIVITY_NEW_TASK標記。

FLAG_ACTIVITY_NO_HISTORY:
因為D根本就沒有被壓入棧中。

FLAG_ACTIVITY_SINGLE_TOP:
和Activity的Launch mode的singleTop類似

Activity的主要屬性:(在 AndroidManifest.xml中 <activity android:XXX />)
allowTaskReparenting:設置成true時,和Intent的FLAG_ACTIVITY_NEW_TASK標記類似。
alwaysRetainTaskStat: 如果用戶長時間將某個task移入后臺,則系統(tǒng)會將該task的棧內(nèi)容彈出只剩下棧底的activity,此時用戶再返回,則只能看到根activity了。如果棧底的activity的這個屬性設置成true,則將阻止這一行為,從而保留所有的棧內(nèi)容。
clearTaskOnLaunch:根activity的這個屬性設置成true時,和上面的alwaysRetainTaskStat的屬性為true情況搞好相反。
finishOnTaskLaunch:對于任何activity,如果它的這個屬性設置成true,則當task被放置到后臺,然后重新啟動后,該activity將不存在了。

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

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

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