Android之FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET
這個(gè)標(biāo)志將會(huì)非常有用當(dāng)你想在你的應(yīng)用中有個(gè)邏輯切換,例如,一個(gè) e-mail的應(yīng)用可能用于一個(gè)命令去顯示附件,這個(gè)命令啟動(dòng)一個(gè)圖片瀏覽的activity去顯示附件,這個(gè)activity是e-mail應(yīng)用的一部分,因?yàn)樗怯脩敉瓿蛇@件事情的一部分。但是,當(dāng)用戶離開這個(gè)e-mail應(yīng)用,一段時(shí)間過(guò)后用戶又從home選擇這個(gè)應(yīng)用,我們更希望這個(gè)時(shí)候回到的界面是顯示命令用于交互的界面,而不是顯示附件的圖片界面。通過(guò)設(shè)置這個(gè)標(biāo)志,當(dāng)加載圖片附件時(shí),包括它本身及它加載的activity在下一次回到該應(yīng)用時(shí)都會(huì)刪除
實(shí)例:
我們有兩個(gè)activity:MainActivity和ActivityA.,從MainActivity啟動(dòng)ActivityA,我們?cè)O(shè)置flag?FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET
public void onClick(View arg0) { // TODO Auto-generated method stub Log.i(TAG, "--onClick--task id = " + getCurrentTaskId()); Intent intent = new Intent("com.leaves.ipanel.ActivityA"); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); startActivity(intent); }我們看一下這個(gè)時(shí)候的堆棧: ACTIVITY MANAGER ACTIVITIES (dumpsys activity activities) Main stack: TaskRecord{42593878 #4 A com.leaves.ipanel U 0} Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.leaves.ipanel/.MainActivity bnds=[163,708][307,852] } Hist #2: ActivityRecord{4267ccb0 u0 com.leaves.ipanel/.ActivityA} Intent { act=com.leaves.ipanel.ActivityA flg=0x80000 cmp=com.leaves.ipanel/.ActivityA } ProcessRecord{4373d460 1722:com.leaves.ipanel/u0a10061} Hist #1: ActivityRecord{4266be38 u0 com.leaves.ipanel/.MainActivity} Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.leaves.ipanel/.MainActivity bnds=[163,708][307,852] } ProcessRecord{4373d460 1722:com.leaves.ipanel/u0a10061} TaskRecord{426f4820 #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{4291c7b0 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{4267f0b8 636:com.android.launcher/1000}
然后我們按home鍵切換到launch,在從launch上啟動(dòng)該apk,這個(gè)時(shí)候會(huì)進(jìn)行任務(wù)的reset.可以看到,顯示的是MainActivity.相關(guān)堆棧:
ACTIVITY MANAGER ACTIVITIES (dumpsys activity activities) Main stack: TaskRecord{42593878 #4 A com.leaves.ipanel U 0} Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.leaves.ipanel/.MainActivity bnds=[163,708][307,852] } Hist #1: ActivityRecord{4266be38 u0 com.leaves.ipanel/.MainActivity} Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.leaves.ipanel/.MainActivity bnds=[163,708][307,852] } ProcessRecord{4373d460 1722:com.leaves.ipanel/u0a10061} TaskRecord{426f4820 #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{4291c7b0 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{4267f0b8 636:com.android.launcher/1000}
可以看到ActivityA被銷毀了。
總結(jié)
以上是生活随笔為你收集整理的Android之FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Android之FLAG_ACTIVIT
- 下一篇: Android之IPC通信中的UID和P