有沒有辦法在調試過程中的某個時刻對活動堆棧進行vizualise或正常運行?活動堆棧
Q
活動堆棧
12
A
回答
6
您可以通過活動管理器獲得一些有用的信息。
ActivityManager manager = (ActivityManager)getApplication().getSystemService(Activity.ACTIVITY_SERVICE);
這將顯示堆棧的頂部,底部和大小,並且說明可能會有用。您將不得不搜索正在運行的任務以查找當前活動。
RunningTaskInfo task = manager.getRunningTasks(10).get(0);
task.baseActivity();
task.numActivities();
task.topActivity();
task.description();
這有一個pkgLst方法,可能會有所幫助。
RunningAppProcessInfo app = manager.getRunningAppProcesses().get(0);
app.pkgList();
不像您希望的那樣有用或簡單,但它可能有所幫助。
Activity提供了getCallingActivity()方法,您可以將其添加到onPause和onResume的日誌中,如前所述。
嵌入式活動還有if (isChild()) getParent();
。
0
不是我所知道的。對於您自己的應用程序,您可以通過將自己推入onResume()
中自己的堆棧數據結構並自行跳出onPause()
中的堆棧來自行跟蹤。
0
我認爲沒有直接的方式,但一種方法是將日誌放入創建/暫停/恢復/銷燬/等所有回調函數中,並查看調用(例如:Log.d())。
0
在模擬器上或在植根手機,您可以使用dumpsys shell命令
adb shell dumpsys activity
,其輸出的現有任務。這裏一個小片段
Running activities (most recent first):
TaskRecord{407d8a30 #6 A com.actionbarsherlock.sample.demos}
Run #2: HistoryRecord{40792ec8 com.actionbarsherlock.sample.demos/.ActionItems}
Run #1: HistoryRecord{40735008 com.actionbarsherlock.sample.demos/.SampleList}
TaskRecord{406de0b8 #2 A com.android.launcher}
Run #0: HistoryRecord{405802c8 com.android.launcher/com.android.launcher2.Launcher}
你甚至可以看到,開始活動
TaskRecord{407d8a30 #6 A com.actionbarsherlock.sample.demos}
clearOnBackground=false numActivities=2 rootWasReset=true
affinity=com.actionbarsherlock.sample.demos
intent={act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.actionbarsherlock.sample.demos/.SampleList}
realActivity=com.actionbarsherlock.sample.demos/.SampleList
lastActiveTime=1492068 (inactive for 2s)
* Hist #2: HistoryRecord{40792ec8 com.actionbarsherlock.sample.demos/.ActionItems}
packageName=com.actionbarsherlock.sample.demos processName=com.actionbarsherlock.sample.demos
launchedFromUid=10040 app=ProcessRecord{40650b68 1840:com.actionbarsherlock.sample.demos/10040}
Intent { cmp=com.actionbarsherlock.sample.demos/.ActionItems }
只提取任務,我用grep
adb shell dumpsys activity | grep "Running activities" -A 10
來源的意圖:http://www.slideshare.net/RanNachmany/manipulating-android-tasks-and-back-stack
相關問題
- 1. Android活動堆棧
- 2. 啓動活動將堆棧
- 3. 替換活動堆棧中的活動
- 4. android插入活動堆棧
- 5. 活動堆棧未清除
- 6. Android活動堆棧管理
- 7. Android中的活動堆棧
- 8. 清除活動堆棧android
- 9. 活動堆棧,singleTask,導航
- 10. 3活動堆棧情況
- 11. 活動堆棧狀態
- 12. 活動堆棧管理
- 13. Android活動堆棧問題
- 14. saveInstanceState堆棧在活動中
- 15. 銷燬活動堆棧
- 16. Android中的活動堆棧
- 17. Android彈出活動堆棧
- 18. Android:搬運活動堆棧
- 19. 完成堆棧活動
- 20. 卸下活動從堆棧
- 21. 活動堆棧或碎片?
- 22. 清除活動堆棧
- 23. 銷燬活動堆棧
- 24. 如何檢測活動堆棧是否爲空以及活動堆棧大小?
- 25. 如何手動管理活動堆棧?
- 26. 重新啓動活動堆棧
- 27. 活動堆棧自動清除?
- 28. 在Android中查看活動堆棧
- 29. Android活動堆棧大小問題?
- 30. 如何管理活動堆棧?
我知道這是一個古老的問題,但它幫助我,除了我需要將此權限添加到AndroidManifest: –
2012-01-31 11:26:34
@MarioLenci GET_TASKS在API 21中已棄用https://developer.android.com/reference/android/Manifest.permission.html#GET_TASKS – 2016-10-14 09:52:18