web-dev-qa-db-fra.com

Comment savoir si le service est en cours d'exécution avec l'aide de Shell dans Android

Je veux savoir si le service de lecteur multimédia (s’inscrit auprès de media.player au démarrage de l’appareil) est en cours d’exécution ou n’utilise pas adb Shell. C'est possible?

J'ai essayé d'exécuter la commande ps mais sans succès.

38
AndroDev

Essayez la ligne de commande 

adb Shell service list

Je reçois aussi une liste de noms de services et leurs noms de paquets.

54

Comme déjà mentionné, adb Shell service list ne listera que les services système.

Comme expliqué dans Émulateur Android: Comment puis-je obtenir une liste des services en cours d'exécution , vous pouvez rechercher des services créés par des applications à l'aide de

// List all services
adb Shell dumpsys activity services

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

S'il renvoie quelque chose, cela signifie que le service est installé. Pour savoir si le service est actuellement démarré ou arrêté, recherchez app=ProcessRecord(...) ou app=null respectivement.

Vous pouvez aussi le faire sous Linux avec un simple

ps | grep myservice

à l'intérieur de votre coquille.

43
user276648

Pour vérifier simplement si un service spécifique est en cours d'exécution, utilisez:

adb Shell service check <service>

Par exemple, adb Shell service check media.player donne Service media.player: found s'il est en cours d'exécution et Service media.player: not found sinon.

Si vous avez besoin de plus de détails, essayez dumpsys <service>. Par exemple, adb Shell dumpsys media.player renvoie des informations sur les clients de media.player, les fichiers ouverts, etc.

Enfin, si vous avez vraiment besoin de détails sérieux pour le débogage, essayez adb Shell dumpsys activity services qui montre ce qui se passe du point de vue de ActivityManager. Cela inclut des informations sur les intentions, les heures de création, l'heure de la dernière activité, les liaisons, etc., etc. Vous pouvez rediriger la sortie si vous souhaitez la stocker pour une visualisation/recherche ultérieure. C'est généralement assez long.

24
Paul Ratazzi

Pour savoir si un processus d'application est en cours d'exécution ou non (arrière-plan ou avant-plan):

adb Shell pidof <package.name>

Il retournera une chaîne vide si le processus n'exécute pas son pid.

0
JerryGoyal