Ich habe gerade angefangen, eine einfache Android-Anwendung zu entwickeln, während ich noch die Plattform lerne.
Ich verwende Eclipse IDE mit dem ADT-Plugin 0.9.6.
Ich muss wissen, ob es möglich ist, den Activity
Stapel anzuzeigen, der einer Aufgabe zugeordnet ist.
Gibt es einen Weg durch das DDMS-Tool oder durch eine andere Technik?
Im Wesentlichen muss ich die Stapelaktivität einer Aufgabe sehen können, um sicherzustellen, dass sich die Anwendung wie erwartet verhält.
Ich weiß, dass es möglich ist, das Aufgabenverhalten in gewissem Maße durch die Verwendung von Flags im Intent
Objekt und durch einige Attribute des <activity>
Elements zu steuern .
Es wäre jedoch schön, eine Art Tool zu haben - insbesondere im Debug-Modus oder so -, mit dem Entwickler den Activity
Stack direkt sehen können.
Antworten:
Über die Befehlszeile können Sie Folgendes verwenden:
adb shell dumpsys activity
Dadurch wird der Aktivitätsmanager aufgefordert, einen Speicherauszug seines aktuellen Status zu drucken. Der erste Teil davon ist der vollständige Aktivitätsverlauf, geordnet nach Aufgaben. Danach werden auch viele Dinge gedruckt, sodass Sie möglicherweise ein wenig nach oben scrollen müssen, um das zu finden, was Sie wollen.
Hier ist ein Beispiel für die Ausgabe (der genaue Inhalt variiert je nach Plattformversion). Die Hauptaufgabe sind Kontakte mit zwei Aktivitäten und dahinter der Launcher mit einer Aktivität:
quelle
adb shell
<Eingabe>dumpsys activity | grep -i run
.adb shell dmpsys activity
können Sie für jede Liste beispielsweiseadb shell dmpsys activity activities
ACTIVITY MANAGER-AKTIVITÄTEN abrufen, die den Hauptstapel, Ausführen von Aktivitäten und Letzte Aufgaben enthalten.dumpsys activity intents
für ausstehende Absichten;dumpsys activity broadcasts
für den Sendezustand;dumpsys activity providers
für Inhaltsanbieter;dumpsys activity services
für Dienstleistungen;dumpsys activity processes
zum Ausführen von Prozessen.adb shell dumpsys activity | grep -i run
oderadb shell dumpsys activity activities | grep -i run
für eine etwas sauberere Ausgabe.Sie können den folgenden Befehl in Ihrer Befehlszeile verwenden, um die Aufgaben und Backstacks im System anzuzeigen:
Sie können auch TaskLogger ausprobieren , ein einfaches Tool, das ich erstellt habe und das alle Aktivitäten und Aufgaben in Ihrer App überwachen und in Echtzeit in Logcat ausgeben kann.
quelle
Ich weiß, dass dies eine alte Frage ist, aber diese Funktionalität ist jetzt in Android Studio integriert:
Suchen Sie dann in der resultierenden Textdatei nach
ACTIVITY
(Großbuchstaben):quelle
Wenn Sie den Taskstapel eines bestimmten Pakets überprüfen möchten, führt der folgende Befehl aus:
quelle
Ich überprüfe immer diesen Teil von langen Dump-Nachrichten.
Hinweis: Lauf 4 ist die Aktivität, die Sie jetzt auf dem Bildschirm sehen. :) :)
quelle
Sie können das Tool hierarchyviewer.bat verwenden. Es ist Teil des Android SDK. Es funktioniert jedoch nur mit Emulator. Aber es ist viel komfortabler und klarer.
Bearbeiten: Ich habe gerade den Hierarchie-Viewer in Eclipse gefunden! Und es funktioniert auch mit realen Geräten. Öffnen Sie einfach die Perspektive Windows-> Perspektive öffnen-> Hierarchieansicht In der Liste sehen Sie alle verbundenen Geräte und Emulatoren sowie den Aktivitätsstapel. Außerdem sehen Sie in der Baumansicht viel mehr Informationen über die Ansicht selbst.
Bearbeiten: Der Hierarchy Viewer funktioniert nur mit Entwicklergeräten. Produktionsgeräte können dies aus Sicherheitsgründen nicht. Weitere Informationen finden Sie in der folgenden Antwort
quelle
Für die Liste der letzten Aufgaben
Für die Liste der ausgeführten Dienste
Für die Liste der aktuellen Inhaltsanbieter
Für die Liste des Broadcast-Status
Für die Liste der ausstehenden Absichten
Für die Liste der Berechtigungen
quelle
AdbCommander
Plugin verwenden und diese Befehle inmacros
tab hinzufügenDafür gibt es jetzt ein Plugin:
https://plugins.jetbrains.com/plugin/12293-activity-stack-view
quelle
Lösung: 'adb shell dumpsys activity' funktioniert nicht mit TabActivity. Wenn jedes Registerkartenelement ausgewählt ist, wird die entsprechende Aktivität gestartet. Bei Verwendung von 'adb shell dumpsys activity' wird jedoch immer 'main' zurückgegeben:
quelle