Activity Recognition stoppt den Empfang von Updates, wenn das Telefon in den Standby-Modus wechselt (Bildschirm ausgeschaltet)

8

Ich habe Probleme mit der Aktivitätserkennung. Ich habe es in einer App implementiert und es funktioniert gut, wenn der Bildschirm des Geräts eingeschaltet ist. Ich habe einen Protokolleintrag in meiner Serviceklasse Aktivitätserkennung, und ich kann sehen, wenn es eine Aktualisierung erhält. So weiß ich, dass es gut funktioniert, wenn der Bildschirm eingeschaltet ist.

Aber nachdem das Telefon in den Standby-Modus versetzt wurde (der Bildschirm ist ausgeschaltet), hört es auf, die Benutzungsaktivität zu erkennen.

Die onDisconnected () in der DetectionRequester-Klasse wird nicht aufgerufen, ich habe das mit einem Log-Post überprüft.

Meine Frage: Warum hört meine App auf, die Nutzungsaktivität zu verfolgen, nachdem das Gerät in den Standby-Modus wechselt? Und wie kann ich damit aufhören, die Aktivitäten der Benutzer zu erkennen?

Lassen Sie es mich wissen, wenn Sie den Code sehen oder weitere Informationen zu meiner App benötigen.

Relevante Code-Bits aus meiner MainActivity-Klasse. Hier startet die App die Anfrage nach ActivityRecognition.

%Vor%

Meine DetectionRequester-Klasse:

%Vor%

}

Der Absichtsdienst:

%Vor%     
DrkStr 01.09.2014, 13:54
quelle

2 Antworten

2

Um zu vermeiden, dass der Akku leer wird, schläft ein Android-Gerät, das nicht benutzt wird, schnell ein. Es ist der Grund dafür, dass dein Dienst aufhört. Sie können mehr darüber lesen, wie es hier gehandhabt werden kann: Das Gerät wach halten . Sehen Sie sich auch WakefulIntentService von cwac-wakeful an. Sieht so aus, als ob es das ist, wonach du suchst.

    
birdy 04.09.2014 08:43
quelle
1

Sehen Sie sich "Wiederholende Alarme" an:

  

Sie arbeiten außerhalb Ihrer Anwendung, sodass Sie sie verwenden können, um Ereignisse oder Aktionen auszulösen, selbst wenn Ihre App nicht läuft, und , selbst wenn das Gerät selbst schläft .

Ссылка

Oder bei "WakeLock":

  

Ein legitimer Fall für die Verwendung einer Wake-Sperre könnte ein Hintergrundservice sein, der eine Wake-Sperre auf setzen muss, damit die CPU arbeitet, während der Bildschirm ausgeschaltet ist . Dieses Verfahren sollte jedoch wegen seiner Auswirkungen auf die Batterielebensdauer minimiert werden.

Speziell "WakefulBroadcastReceiver":

  

Mit einem Broadcast-Empfänger in Verbindung mit einem Dienst können Sie den Lebenszyklus einer Hintergrundaufgabe verwalten.

     

Ein WakefulBroadcastReceiver ist eine spezielle Art von Broadcast-Empfänger, der sich um die Erstellung und Verwaltung eines PARTIAL_WAKE_LOCK für Ihre App kümmert. Ein WakefulBroadcastReceiver übergibt die Arbeit an einen Dienst (normalerweise einen IntentService), während sichergestellt wird, dass das Gerät beim Übergang nicht in den Ruhezustand zurückkehrt. Wenn Sie die Wake-Sperre beim Übergang der Arbeit zu einem Dienst nicht beibehalten, können Sie das Gerät effektiv in den Ruhezustand versetzen, bevor die Arbeit abgeschlossen ist. Das Endergebnis ist, dass die App die Arbeit bis zu einem willkürlichen Punkt in der Zukunft nicht beendet, was nicht das ist, was Sie wollen.

Ссылка

Wenn Sie den zweiten Ansatz in Betracht ziehen, achten Sie darauf, die Batterie zu leeren ...

    
semsamot 04.09.2014 07:59
quelle