Android之FLAG_ACTIVITY_SINGLE_TOP
生活随笔
收集整理的這篇文章主要介紹了
Android之FLAG_ACTIVITY_SINGLE_TOP
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
FLAG_ACTIVITY_SINGLE_TOP :如果當前棧頂的activity就是要啟動的activity,則不會再啟動一個新的activity
實例:
我們有一個apk,apk中包含兩個Activity:MainActivity和ActivityA,點擊MainActivity啟動ActivityA,點擊ActivityA還是啟動ActivityA,但我們設置FLAG_ACTIVITY_SINGLE_TOP標記:
[java] view plain copy
print?
??? public void onClick(View v) { ?
??????? // TODO Auto-generated method stub ?
??????? Log.i(TAG, "--onClick--task id = " + getCurrentTaskId());??? ?
???????? ?
??????? Intent intent = new Intent("com.leaves.ipanel.ActivityA");?? ?
??????? //intent.setFlags( Intent.FLAG_ACTIVITY_NEW_TASK); ?
??????? intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); ?
??????? startActivity(intent);? ?
??? } ?
??????? ?
啟動動ActivityA,隨便我們怎么再點擊,都只有一個ActivityA實例,堆棧:
[plain] view plain copy
print?
??? ACTIVITY MANAGER ACTIVITIES (dumpsys activity activities) ?
????? Main stack: ?
??????? TaskRecord{438f1ed8 #9 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 #2: ActivityRecord{4265b1b0 u0 com.leaves.ipanel/.ActivityA} ?
??????????? Intent { act=com.leaves.ipanel.ActivityA flg=0x20000000 cmp=com.leaves.ipanel/.ActivityA } ?
??????????? ProcessRecord{4292a550 2115:com.leaves.ipanel/u0a10061} ?
????????? Hist #1: ActivityRecord{42485758 u0 com.leaves.ipanel/.MainActivity} ?
??????????? Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.leaves.ipanel/.MainActivity } ?
??????????? ProcessRecord{4292a550 2115: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}?
實例:
我們有一個apk,apk中包含兩個Activity:MainActivity和ActivityA,點擊MainActivity啟動ActivityA,點擊ActivityA還是啟動ActivityA,但我們設置FLAG_ACTIVITY_SINGLE_TOP標記:
[java] view plain copy
print?
??? public void onClick(View v) { ?
??????? // TODO Auto-generated method stub ?
??????? Log.i(TAG, "--onClick--task id = " + getCurrentTaskId());??? ?
???????? ?
??????? Intent intent = new Intent("com.leaves.ipanel.ActivityA");?? ?
??????? //intent.setFlags( Intent.FLAG_ACTIVITY_NEW_TASK); ?
??????? intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); ?
??????? startActivity(intent);? ?
??? } ?
??????? ?
啟動動ActivityA,隨便我們怎么再點擊,都只有一個ActivityA實例,堆棧:
[plain] view plain copy
print?
??? ACTIVITY MANAGER ACTIVITIES (dumpsys activity activities) ?
????? Main stack: ?
??????? TaskRecord{438f1ed8 #9 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 #2: ActivityRecord{4265b1b0 u0 com.leaves.ipanel/.ActivityA} ?
??????????? Intent { act=com.leaves.ipanel.ActivityA flg=0x20000000 cmp=com.leaves.ipanel/.ActivityA } ?
??????????? ProcessRecord{4292a550 2115:com.leaves.ipanel/u0a10061} ?
????????? Hist #1: ActivityRecord{42485758 u0 com.leaves.ipanel/.MainActivity} ?
??????????? Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.leaves.ipanel/.MainActivity } ?
??????????? ProcessRecord{4292a550 2115: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}?
總結
以上是生活随笔為你收集整理的Android之FLAG_ACTIVITY_SINGLE_TOP的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android之 FLAG_ACTIVI
- 下一篇: Android之FLAG_ACTIVIT