Sök…


Anmärkningar

Dysningsläge är en uppsättning ändringar och regler som gör att din telefon sover i viloläge.

På Android 6.0 Marshmallow: Doze-läget aktiveras efter en stund skärmen är av, enheten är stillastående och den körs på batteri. Duschläge på marshmallow Som du kan se i diagrammet ovan, när Doze Mode aktiveras, får enheten ingen wakelocks, nätverksåtkomst, jobb / synkroniseringar, larm, GPS / Wi-fi-skanningar.

På Android 7.0 Nougat: Föreställ dig om din telefon är på fickan (skärmen är av, den körs på batteri, men den är inte stationär) kanske du vill ha Doze Mode-funktioner också, eller hur? Så det var därför Google tillkännagav det utvidgade doze-läget: Det körs när skärmen är av, men inte stationär. Duschläge på Nougat Som du ser i detta diagram är endast nätverksåtkomst och jobb / synkroniseringar inaktiverade. Observera att den utvidgade doze inte ersätter det första doze-läget. De arbetar tillsammans beroende på telefonstatus (stillastående eller inte). Här är skillnaderna: Dysningsläge-skillnader Utvecklare bör vara medvetna om att:

  • Doze kan hålla tillfällig wakelock och nätverksåtkomst för högprioriterade GCM-meddelanden (Google Cloud Messaging) (i fall där användaren behöver en omedelbar anmälan);
  • Förgrundsinformationstjänster (som musikuppspelning) fortsätter att fungera.

Du kan hitta mer information här: https://developer.android.com/training/monitoring-device-state/doze-standby.html

Uteslut app från att använda doze-läge

  1. Öppna telefonens inställningar
  2. öppet batteri
  3. öppna menyn och välj "batterioptimering"
  4. Välj "alla appar" från rullgardinsmenyn
  5. välj appen som du vill vitlista
  6. välj "inte optimera"

Nu kommer den här appen att visas under inte optimerade appar.

En app kan kontrollera om den är vitlistad genom att ringa isIgnoringBatteryOptimizations()

Vitlista en Android-applikation programmatiskt

Vitlistning inaktiverar inte dausläget för din app, men du kan göra det genom att använda nätverks- och håll-vak-lås.

Vitlistning av en Android-applikation programmatiskt kan göras enligt följande:

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);
}

Resultatet av att starta aktiviteten ovan kan beskrivas med följande kod:

@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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow