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. Doze-modus op Marshmallow 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. Doze-modus op Nougat 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: Onderscheidingen in de dozemodus 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

  1. Open de instellingen van de telefoon
  2. open batterij
  3. open menu en selecteer "batterijoptimalisatie"
  4. selecteer 'alle apps' in het vervolgkeuzemenu
  5. selecteer de app die u op de witte lijst wilt zetten
  6. 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
        }
    }
}


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow