Ich habe dieses etwas seltsame Verhalten während der Entwicklung auf Android und während meines Googelns gefunden. Die einzige Antwort, die ich finden konnte, war, dass dies von Entwurf ist und dass ich mich nicht darum kümmern sollte.
Meine Anwendung ruft Standortdaten ab, während sie aktiv ist, und ich wollte eine Möglichkeit zum Erhalt der Batterie implementieren, indem die Standortaktualisierungen gestoppt werden, wenn das Ereignis onPause aufgerufen wird, und später das Abrufen bei Aufruf des Ereignisses onResume fortsetzen.
Beim Debugging habe ich dieses seltsame Verhalten beim Sperren des Telefons bemerkt, onPause-> onResume wird nacheinander drei oder mehr Mal aufgerufen und endet dann mit einem onStop-Ereignis. Die einzige Antwort, die ich finden konnte, war wie: So funktioniert Android, vergiss es.
Ich glaube, ich bin neugierig, kann mir jemand erklären, dass ich eine einfache Unteraktivität mehrmals anhalten und wieder aufnehmen muss? Verbraucht das nicht mehr Batterie, besonders für größere Tätigkeiten, die ernsthaften Code in onResume haben? Gibt es eine Möglichkeit, dies zu verhindern? Ich würde mich freuen, wenn ich weiß, dass zumindest mein Code in diesen Ereignissen nicht aufgerufen wird, vielleicht mit einem if {} Block, der unnötige CPU-Zyklen verhindert.
Jede Einsicht wird sehr geschätzt!
Sie müssen den Broadcast-Empfänger registrieren, um "Screen Time Out" - und "Screen Lock" -Ereignisse zu behandeln.
Sie stoppen nur Ihre Daten abrufen. Beispielcode:
%Vor%Sie müssen den Broadcast-Empfänger für diese ScreenReceiver-Klasse in androidMenifest.xml registrieren
Ich bin kürzlich auf das gleiche Problem gestoßen und konnte es stoppen, indem ich mit Config-Änderungen für die Aktivität in der Manifest-Datei spielte. Ich glaube, dass, wenn ein Benutzer ein Gerät sperrt, ein paar Dinge passieren können: Die Ausrichtung kann sich ändern, die Bildschirmgröße kann sich ändern (wenn Navigations- oder Benachrichtigungsleisten verschwinden) usw. und das führt dazu, dass Android alle Aktivitäten neu erstellt. Fragmente. Ich habe am Ende viele der Optionen in Config changes ausgewählt und es hat aufgehört, onescape nach onPause aufzurufen.