2012-06-05 3 views
34

Voglio sapere se il servizio di lettore multimediale (registra con media.player all'avvio del dispositivo) è in esecuzione o non utilizza la shell adb. È possibile?Come sapere se il servizio è in esecuzione utilizzando la shell adb in Android

Ho provato a eseguire il comando ps ma nessun successo.

+0

se ps non mostra alcuna informazione relativa al servizio media, significa che il processo relativo al servizio non è avviato! (All'avvio del dispositivo) – sat

risposta

49

provare la riga di comando

adb shell service list

ottengo una lista di nomi di servizi ei loro nomi dei pacchetti pure.

+0

media.player: [android.media.IMediaPlayerService] è tra i servizi elencati sul mio dispositivo. –

+24

sembra che mostri solo il servizio di sistema, piuttosto che il servizio di app, giusto? – JackWM

+1

Posso ucciderli? quello della lista servizi – Hugo

24

Per controllare semplicemente se un determinato servizio è in esecuzione, utilizzare:

adb shell service check <service> 

Per esempio, adb shell service check media.playerService media.player: found se è in esecuzione e Service media.player: not found altrimenti.

Se sono necessari ulteriori dettagli, provare dumpsys <service>. Ad esempio, adb shell dumpsys media.player restituisce informazioni su media.player 'clienti s, file aperti, ecc

Infine, se si ha realmente bisogno serio dettaglio per il debug, provare adb shell dumpsys activity services che mostra cosa sta succedendo dal ActivityManager' punto di vista s. Ciò include informazioni su intenti, creare orari, ultima attività, legature, ecc. Ecc. È possibile reindirizzare l'output se si desidera archiviarlo per una successiva visualizzazione/ricerca. In genere è piuttosto lungo.

+1

Ma conoscere il nome esatto del pacchetto dei servizi dell'app potrebbe essere ingombrante :(Può essere utilizzato con | grep -i "myservice" –

27

Come già detto, adb shell service list elencherà solo i servizi di sistema.

Come spiegato nel Android Emulator: How can I get a list of services that are running, si può guardare per i servizi creati da applicazioni utilizzando

// List all services 
adb shell dumpsys activity services 

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

Se restituisce qualcosa, significa che il servizio è installato. Per sapere se il servizio è attualmente avviato o arrestato, cerca rispettivamente app=ProcessRecord(...) o app=null.

si può anche fare lo stile Linux con un semplice

ps | grep myservice 

mentre all'interno della vostra shell.

+0

Se la mia applicazione è un'applicazione di sistema, verrà visualizzata con "servizio shell adb" lista "comando? – savi

+0

" adb shell dumpsys attività servizi myservice "ha funzionato come un fascino. –