Wenn Sie die Häufigkeit der Hintergrundaktualisierungen ändern, um die Auswirkungen dieser Updates Updates zur Akkulaufzeit, das Überprüfen des aktuellen Akkuladestands und des Ladestatus sind ein guter Ort, beginnen.
Die Auswirkungen von App-Updates auf die Akkulaufzeit hängen vom Akkuladestand und des Ladezustands des Geräts. Auswirkungen von Updates, während das Gerät über die Stromversorgung geladen wird ist vernachlässigbar. Du kannst die Aktualisierungsrate also in den meisten Fällen maximieren, wenn das Gerät mit dem Internet verbunden ist. an eine Steckdose anschließen. Wenn sich das Gerät hingegen entlädt, hilft es, die Aktualisierungsrate zu reduzieren, um die Akkulaufzeit zu verlängern.
Ebenso können Sie den Akkuladestand überprüfen und so die Häufigkeit der Die Aktualisierung erfolgt sogar, wenn der Akku fast leer ist.
Aktuellen Ladestatus ermitteln
Ermitteln Sie zuerst den aktuellen Gebührenstatus. Das BatteryManager
überträgt alle Akku- und Ladedetails in einem fixierten Intent
, das Folgendes enthält:
den Ladestatus.
Da es sich um einen fixierten Intent handelt, müssen Sie kein BroadcastReceiver
registrieren. Rufen Sie einfach registerReceiver
auf und übergeben Sie
null
als Empfänger verwenden (siehe nächstes Snippet), ist der aktuelle Intent für den Akkustatus
zurückgegeben. Sie könnten hier ein echtes BroadcastReceiver
-Objekt übergeben,
Wir behandeln Aktualisierungen in einem späteren
Abschnitt, daher ist es nicht erforderlich.
Kotlin
val batteryStatus: Intent? = IntentFilter(Intent.ACTION_BATTERY_CHANGED).let { ifilter -> context.registerReceiver(null, ifilter) }
Java
IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); Intent batteryStatus = context.registerReceiver(null, ifilter);
Du kannst sowohl den aktuellen Ladestatus abrufen als auch, wenn das Gerät geladen wird, wird über USB oder Wechselstrom aufgeladen:
Kotlin
val status: Int = batteryStatus?.getIntExtra(BatteryManager.EXTRA_STATUS, -1) ?: -1 val isCharging: Boolean = status == BatteryManager.BATTERY_STATUS_CHARGING || status == BatteryManager.BATTERY_STATUS_FULL // How are we charging? val chargePlug: Int = batteryStatus?.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1) ?: -1 val usbCharge: Boolean = chargePlug == BatteryManager.BATTERY_PLUGGED_USB val acCharge: Boolean = chargePlug == BatteryManager.BATTERY_PLUGGED_AC
Java
// Are we charging / charged? int status = batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS, -1); boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING || status == BatteryManager.BATTERY_STATUS_FULL; // How are we charging? int chargePlug = batteryStatus.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1); boolean usbCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_USB; boolean acCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_AC;
Normalerweise sollten Sie die Aktualisierungsrate im Hintergrund maximieren, falls das Gerät an ein AC-Ladegerät angeschlossen ist, reduzieren Sie die Laderate, wenn sie über USB geladen wird, und senken Sie sie wenn sich der Akku entlädt.
Änderungen des Ladestatus überwachen
Der Ladestatus kann sich genauso leicht ändern, wie ein Gerät angeschlossen werden kann. Daher ist es wichtig, Überwachen Sie den Ladestatus auf Änderungen und ändern Sie die Aktualisierungsrate entsprechend.
BatteryManager
überträgt eine Aktion immer dann, wenn das Gerät verbunden ist oder
nicht mit Strom versorgt. Es ist wichtig, dass du diese Ereignisse erhältst, auch wenn deine App
vor allem, weil sich diese Ereignisse darauf auswirken sollten, wie oft Sie Ihre App starten,
ein Hintergrundupdate initiieren. Daher sollten Sie ein BroadcastReceiver
in Ihrem Manifest registrieren, um auf beide Ereignisse zu warten, indem Sie das Ereignis
ACTION_POWER_CONNECTED
und ACTION_POWER_DISCONNECTED
in einem Intent-Filter.
<receiver android:name=".PowerConnectionReceiver"> <intent-filter> <action android:name="android.intent.action.ACTION_POWER_CONNECTED"/> <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED"/> </intent-filter> </receiver>
Aktuellen Akkustand ermitteln
In einigen Fällen ist es auch hilfreich, den aktuellen Akkuladestand zu ermitteln. Sie können sich dafür entscheiden, Damit wird die Aktualisierungsgeschwindigkeit im Hintergrund aktualisiert, wenn der Akkustand unter einem bestimmten Niveau liegt.
Du kannst den aktuellen Akkustand ermitteln, indem du den aktuellen Akkuladestand entnimmst den Intent für den Akkustatus aus:
Kotlin
val batteryPct: Float? = batteryStatus?.let { intent -> val level: Int = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1) val scale: Int = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1) level * 100 / scale.toFloat() }
Java
int level = batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, -1); int scale = batteryStatus.getIntExtra(BatteryManager.EXTRA_SCALE, -1); float batteryPct = level * 100 / (float)scale;
Auf erhebliche Änderungen des Akkustands reagieren
Sie können den Akkustatus nicht ohne Weiteres ständig überwachen, das ist aber nicht erforderlich.
Generell sind die Auswirkungen der Überwachung des Akkuladestands stärker.
als das normale Verhalten Ihrer App hat. Die Registrierung einer
BroadcastReceiver
im Manifest, um bei niedrigem Akkustand ausstehende Arbeiten abzubrechen,
dienen in erster Linie dazu, den Akku stärker zu entladen.
unmöglich, weil
Android 8.0) Stattdessen können Sie Arbeitsbeschränkungen festlegen,
die beschreiben, wann sie ausgeführt werden soll,
So kann das System eine Entscheidung treffen, ohne dass Ihre App gestartet werden muss.
Es ist generell empfehlenswert, die Hintergrundupdates nicht auszuführen, wenn der Akku geladen ist.
extrem niedrig. Es spielt keine Rolle, wie aktuell Ihre Daten sind, wenn das Smartphone sich selbst ausschaltet, bevor Sie
die Sie nutzen können. Gehen Sie dazu wie folgt vor:
WorkManager-Bibliothek verwenden
mit einem
BatteryNotLow
-Einschränkung
um anzugeben, dass die Arbeit nicht durchgeführt werden soll, wenn die Batterie schwach ist (zusätzlich zu
NetworkType
-Einschränkungen).
In vielen Fällen geschieht das Aufladen eines Geräts zusammen mit dem Einlegen in ein Dock. Die nächste erfahren Sie, wie Sie den aktuellen Status des Docks ermitteln und Änderungen am Gerät überwachen können. andocken.