Czy istnieje sposób na zwizualizowanie stosu działań, w pewnym momencie podczas debugowania lub normalnego uruchomienia?stos działań
Odpowiedz
Możesz uzyskać przydatne informacje z menedżerem aktywności.
ActivityManager manager = (ActivityManager)getApplication().getSystemService(Activity.ACTIVITY_SERVICE);
Pokaże Ci górny, dolny i rozmiar stosu, a opis może być przydatny. Będziesz musiał przeszukać uruchomione zadania, aby znaleźć bieżącą aktywność.
RunningTaskInfo task = manager.getRunningTasks(10).get(0);
task.baseActivity();
task.numActivities();
task.topActivity();
task.description();
Jest to metoda pkgLst, która może być pomocna.
RunningAppProcessInfo app = manager.getRunningAppProcesses().get(0);
app.pkgList();
Nie tak użyteczne i proste, jak się spodziewaliśmy, ale może pomóc.
Aktywność udostępnia metodę getCallingActivity(), którą można dodać do dzienników w trybie onPause i onResume, jak sugerowano wcześniej.
Istnieje również if (isChild()) getParent();
dla działań osadzonych.
Nie jestem tego świadomy. W ramach własnej aplikacji możesz śledzić to samodzielnie, przesuwając się na własną strukturę danych stosu w onResume()
i wyskakując z tego stosu w onPause()
.
Nie myślę w sposób bezpośredni, ale sposobem jest umieszczenie logów we wszystkich wywołaniach, takich jak create/pause/resume/destroy/etc i zobacz wywołania (Ex: Log.d()).
na emulatorze lub ukorzenionych telefonu można użyć dumpsys powłoki polecenie
adb shell dumpsys activity
który wyprowadza dotychczasowych zadań. Tutaj trochę urywek
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}
Można nawet zobaczyć intencję, która rozpoczęła działalność
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 }
aby wyodrębnić tylko te zadania, używam grep
adb shell dumpsys activity | grep "Running activities" -A 10
Źródło: http://www.slideshare.net/RanNachmany/manipulating-android-tasks-and-back-stack
- 1. Jak wyświetlić stos działań w debugowaniu?
- 2. Wysyłanie dalszych działań podczas obsługi działań
- 3. Niezbilansowany stos!
- 4. Sekwencja działań WiX
- 5. Wykonywanie działań w tle
- 6. GCC - Jak wyrównać stos?
- 7. Stos wdrażania Node.js
- 8. powolne szyny stos
- 9. Modyfikacja stos w Androidzie
- 10. Stos śledzenia jako ciąg
- 11. Stos funkcja alokacji (wydajność)
- 12. Wątek bezpieczny stos C++
- 13. Manipulowanie monada stos
- 14. Obserwowalny stos i kolejka
- 15. Stos, foreach, zła kolejność?
- 16. raster Stos w pętli
- 17. Java Stos Porównanie
- 18. Drukuj stos wywołań PHP
- 19. stos „Nieprawidłowy Opcja` --make`
- 20. Jak uaktualnić stos ghc
- 21. Swift stos/heap zrozumienie
- 22. Zapisywanie rozpoczętych działań w Androidzie
- 23. Jak wyczyścić Android Stack działań?
- 24. ustawić układ dla określonych działań?
- 25. Uwierzytelnianie Sails.js dla działań modelowych
- 26. wifi zmieniło działań w android
- 27. wiązanie usługi dla wielu działań
- 28. Automatyzacja działań symulatora BlackBerry 10
- 29. Przechowywanie działań użytkownika w Django
- 30. Tworzenie GoogleApiClient dla wielu działań
Wiem, że to stary qustion, ale pomógł mi, oprócz tego, że musiałem dodać to uprawnienie do AndroidManifest: –
@MarioLenci GET_TASKS jest nieaktualny w API 21 https://developer.android.com/reference/android/Manifest.permission.html#GET_TASKS –