Android
Doze-modus
Zoeken…
Opmerkingen
De dozemodus is een reeks wijzigingen en regels die uw telefoon in slaapstand zetten.
Op Android 6.0 Marshmallow: de dozemodus wordt geactiveerd nadat het scherm is uitgeschakeld, het apparaat stilstaat en op de batterij werkt. Zoals u in het bovenstaande diagram kunt zien, krijgt het apparaat, wanneer de dozemodus wordt geactiveerd, geen wakelocks, netwerktoegang, taken / synchronisaties, alarmen, GPS / wifi-scans.
Op Android 7.0 Nougat: stel je voor dat je telefoon in je zak zit (het scherm is uit, het werkt op batterij, maar het is niet stationair), misschien wil je de Doze-modus ook gebruiken, toch? Daarom heeft Google de uitgebreide doze-modus aangekondigd: deze wordt uitgevoerd wanneer het scherm is uitgeschakeld, maar niet stationair. Zoals u in dit diagram kunt zien, zijn alleen netwerktoegang en taken / synchronisaties uitgeschakeld. Merk op dat de uitgebreide doze de eerste dozemodus niet vervangt. Ze werken samen, afhankelijk van de telefoonstatus (stationair of niet). Hier zijn de verschillen: Ontwikkelaars moeten zich ervan bewust zijn dat:
- Doze kan tijdelijke wakelock- en netwerktoegang behouden voor GCM-berichten (Google Cloud Messaging) met hoge prioriteit (voor gevallen waarin de gebruiker een onmiddellijke melding nodig heeft);
- Voorgrondservices (zoals het afspelen van muziek) blijven werken.
U kunt hier meer informatie vinden: https://developer.android.com/training/monitoring-device-state/doze-standby.html
App uitsluiten van het gebruik van de doze-modus
- Open de instellingen van de telefoon
- open batterij
- open menu en selecteer "batterijoptimalisatie"
- selecteer 'alle apps' in het vervolgkeuzemenu
- selecteer de app die u op de witte lijst wilt zetten
- selecteer "niet optimaliseren"
Nu wordt deze app weergegeven onder niet-geoptimaliseerde apps.
Een app kan controleren of deze op de witte lijst staat door isIgnoringBatteryOptimizations()
aan te roepen
Een Android-applicatie programmatisch op een witte lijst plaatsen
Whitelisting schakelt de dozemodus voor uw app niet uit, maar u kunt dit doen door netwerk- en hold-wake-vergrendelingen te gebruiken.
Een programmatische witte lijst van een Android-applicatie kan als volgt worden gedaan:
boolean isIgnoringBatteryOptimizations = pm.isIgnoringBatteryOptimizations(getPackageName());
if(!isIgnoringBatteryOptimizations){
Intent intent = new Intent();
intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
intent.setData(Uri.parse("package:" + getPackageName()));
startActivityForResult(intent, MY_IGNORE_OPTIMIZATION_REQUEST);
}
Het resultaat van het starten van de bovenstaande activiteit kan worden verfraaid met de volgende code:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == MY_IGNORE_OPTIMIZATION_REQUEST) {
PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE);
boolean isIgnoringBatteryOptimizations = pm.isIgnoringBatteryOptimizations(getPackageName());
if(isIgnoringBatteryOptimizations){
// Ignoring battery optimization
}else{
// Not ignoring battery optimization
}
}
}