web-dev-qa-db-de.com

Wie Sie wissen, ob der Dienst mithilfe der ADB-Shell in Android ausgeführt wird

Ich möchte wissen, ob der Media Player-Dienst (der sich beim booten des Geräts bei media.player registriert) läuft oder ob er adb Shell verwendet. Ist es möglich?

Ich habe versucht, den Befehl ps auszuführen, aber keinen Erfolg.

38
AndroDev

Versuchen Sie es mit der Befehlszeile 

adb Shell service list

Ich bekomme auch eine Liste mit Dienstnamen und deren Paketnamen.

54

Wie bereits erwähnt, listet adb Shell service list nur Systemdienste auf.

Wie im Android Emulator erläutert: Wie kann ich eine Liste der Dienste erhalten, die ausgeführt werden , können Sie mit Hilfe von Apps erstellte Dienste suchen

// List all services
adb Shell dumpsys activity services

// List all services containing "myservice" in its name
adb Shell dumpsys activity services myservice

Wenn etwas zurückgegeben wird, bedeutet dies, dass der Dienst installiert ist. Suchen Sie nach app=ProcessRecord(...) bzw. app=null, um zu erfahren, ob der Dienst aktuell gestartet oder angehalten wurde.

Sie können es auch mit einem einfachen Linux-Stil tun

ps | grep myservice

während in Ihrer Shell.

43
user276648

Um einfach zu prüfen, ob ein bestimmter Dienst ausgeführt wird, verwenden Sie Folgendes:

adb Shell service check <service>

Zum Beispiel gibt adb Shell service check media.playerService media.player: found, wenn es läuft, andernfalls Service media.player: not found.

Wenn Sie mehr Details benötigen, versuchen Sie dumpsys <service>. Zum Beispiel gibt adb Shell dumpsys media.player Informationen zu media.players Clients, zu offenen Dateien usw. zurück.

Wenn Sie wirklich ernsthafte Details für das Debugging benötigen, versuchen Sie es mit adb Shell dumpsys activity services, was zeigt, was aus ActivityManager Sicht geschieht. Dazu gehören Informationen zu Absichten, Erstellungszeiten, Zeitpunkt der letzten Aktivität, Bindungen usw. usw. Sie können die Ausgabe umleiten, wenn Sie sie zur späteren Anzeige/Suche speichern möchten. Es ist normalerweise ziemlich lang.

24
Paul Ratazzi

So erfahren Sie, ob ein App-Prozess ausgeführt wird oder nicht (Hintergrund oder Vordergrund):

adb Shell pidof <package.name>

Es wird eine leere Zeichenfolge zurückgegeben, wenn der Prozess nicht ausgeführt wird.

0
JerryGoyal