有沒有辦法在調試過程中的某個時刻對活動堆棧進行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. Android彈出活動堆棧
- 4. 清除活動堆棧android
- 5. Android:搬運活動堆棧
- 6. 卸下活動從堆棧
- 7. Android活動堆棧管理
- 8. saveInstanceState堆棧在活動中
- 9. 活動堆棧管理
- 10. android插入活動堆棧
- 11. Android活動堆棧問題
- 12. 銷燬活動堆棧
- 13. 如何手動管理活動堆棧?
- 14. 活動堆棧自動清除?
- 15. Android活動歷史堆棧問題
- 16. 來自堆棧onResume的流行活動
- 17. 訪問堆棧中的以下活動
- 18. 如何殺死堆棧活動
- 19. 在Android中查看活動堆棧
- 20. 從堆棧中清除活動
- 21. 如何操作Android活動堆棧?
- 22. 如何管理活動堆棧?
- 23. 所有活動堆棧將爲空
- 24. 操縱活動堆棧中的Android
- 25. 將活動插入根堆棧
- 26. 的Android活動堆棧問題
- 27. 活動堆棧中的問題android
- 28. 組織片段活動導航堆棧
- 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