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.
Versuchen Sie es mit der Befehlszeile
adb Shell service list
Ich bekomme auch eine Liste mit Dienstnamen und deren Paketnamen.
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.
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.player
Service 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.player
s 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.
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.