日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

Android之 FLAG_ACTIVITY_CLEAR_TASK

發(fā)布時間:2023/12/4 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android之 FLAG_ACTIVITY_CLEAR_TASK 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

FLAG_ACTIVITY_CLEAR_TASK :如果在調(diào)用Context.startActivity時傳遞這個標(biāo)記,將會導(dǎo)致任何用來放置該activity的已經(jīng)存在的task里面的已經(jīng)存在

的activity先清空,然后該activity再在該task中啟動,也就是說,這個新啟動的activity變?yōu)榱诉@個空tas的根activity.所有老的activity都結(jié)束掉。

該標(biāo)志必須和FLAG_ACTIVITY_NEW_TASK一起使用。

示例:

我們有三個activity:MainActivity、ActivityA、ActivityB. 依次從MainActivity中啟動ActivityA,從ActivityA中啟動ActivityB.

首先我們所有的都使用缺省的,也即沒有設(shè)置taskAffinity、launchMode,啟動activity時Intent也不帶標(biāo)記,我們看一下啟動B之后的堆棧:

ACTIVITY MANAGER ACTIVITIES (dumpsys activity activities) Main stack: TaskRecord{4199dd68 #56 A com.leaves.ipanel U 0} Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.leaves.ipanel/.MainActivity } Hist #3: ActivityRecord{4140fdf8 u0 com.leaves.ipanel/.ActivityB} Intent { act=com.leaves.ipanel.ActivityB cmp=com.leaves.ipanel/.ActivityB } ProcessRecord{41517e80 13350:com.leaves.ipanel/u0a10061} Hist #2: ActivityRecord{413ff7e8 u0 com.leaves.ipanel/.ActivityA} Intent { act=com.leaves.ipanel.ActivityA cmp=com.leaves.ipanel/.ActivityA } ProcessRecord{41517e80 13350:com.leaves.ipanel/u0a10061} Hist #1: ActivityRecord{413f8b28 u0 com.leaves.ipanel/.MainActivity} Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.leaves.ipanel/.MainActivity } ProcessRecord{41517e80 13350:com.leaves.ipanel/u0a10061} TaskRecord{41350f60 #2 A com.android.launcher U 0} Intent { act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10600000 cmp=com.android.launcher/com.android.launcher2.Launcher } Hist #0: ActivityRecord{41616790 u0 com.android.launcher/com.android.launcher2.Launcher} Intent { act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10000000 cmp=com.android.launcher/com.android.launcher2.Launcher } ProcessRecord{41615818 628:com.android.launcher/1000}
可以看到三者在同一個task中,且都存在。

接下來我們在啟動ActivityB時添加FLAG_ACTIVITY_CLEAR_TASK和FLAG_ACTIVITY_NEW_TASK

public void onClick(View v) { // TODO Auto-generated method stub Log.i(TAG, "--onClick--task id = " + getCurrentTaskId()); Intent intent = new Intent("com.leaves.ipanel.ActivityB"); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); } 再看下啟動ActivityB之后的堆棧:

ACTIVITY MANAGER ACTIVITIES (dumpsys activity activities) Main stack: TaskRecord{4245bd10 #57 A com.leaves.ipanel U 0} Intent { act=com.leaves.ipanel.ActivityB flg=0x10008000 cmp=com.leaves.ipanel/.ActivityB } Hist #1: ActivityRecord{413f8b28 u0 com.leaves.ipanel/.ActivityB} Intent { act=com.leaves.ipanel.ActivityB flg=0x10008000 cmp=com.leaves.ipanel/.ActivityB } ProcessRecord{41413010 13441:com.leaves.ipanel/u0a10061} TaskRecord{41350f60 #2 A com.android.launcher U 0} Intent { act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10600000 cmp=com.android.launcher/com.android.launcher2.Launcher } Hist #0: ActivityRecord{41616790 u0 com.android.launcher/com.android.launcher2.Launcher} Intent { act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10000000 cmp=com.android.launcher/com.android.launcher2.Launcher } ProcessRecord{41615818 628:com.android.launcher/1000}
可以看到,MainActivity和ActivityA都被結(jié)束掉了,原因就是因為該task用來裝載ActivityB,而啟動時又設(shè)置了FLAG_ACTIVITY_CLEAR_TASK和FLAG_ACTIVITY_NEW_TASK

總結(jié)

以上是生活随笔為你收集整理的Android之 FLAG_ACTIVITY_CLEAR_TASK的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。