2012-04-07 10 views
1

Ich möchte eine Service nur ausführen, wenn der Benutzer aktiv ist oder allgemeiner: wenn das Telefon aktiv ist. Der Dienst muss nicht ausgeführt werden, wenn der Bildschirm ausgeschaltet ist. Sobald der Benutzer sein Telefon entsperrt, möchte ich, dass der Dienst erneut ausgeführt wird.Wie führe ich einen Dienst nur aus, wenn der Benutzer/das Telefon aktiv ist?

Wie erreiche ich dieses Verhalten?

Meine eigentliche Aufgabe: Ich möchte Logcat erfassen. Daher habe ich einen Service erstellt, der einen Thread erzeugt, der die Ausgabe des "logcat" -Prozesses liest.

Wie genau verhält sich dieser Hintergrund-Thread, wenn das Telefon gesperrt wird? Es hat keine Wake-Locks oder ähnliches. Android wird den Thread angehalten, wenn das Telefon zu schlafen geht oder wird Android dieser Thread halten von dem Schlafengehen? Wie wird es fortgesetzt werden, nachdem das Telefon erwacht?

Ich dachte auch über einen Alarm über'AlarmManager' Registrierung, die alle 15 Minuten und analysiert die logcat abfeuert. Aber mit diesem Ansatz werde ich wahrscheinlich einige der Logcat-Zeilen verpassen.

Antwort

1

Für Dienst neu starten: Sie können einen Empfänger für ACTION_USER_PRESENT oder ACTION_SCREEN_ON registrieren: diese Absicht durch das System gesendet, wenn der Benutzer vorhanden ist (wenn das Telefon aktiv ist) nach Gerät aufwacht (zum Beispiel, wenn die Tastensperre aktiviert ist weg). oder wenn der Telefonbildschirm an ist.

Für Service stoppen: verwenden ACTION_SCREEN_OFF Absicht diese Absicht durch deivce senden, wenn der Benutzer nicht vorhanden oder Handy-Display ist ausgeschaltet ist

Verwandte Themen