Android
Duschläge
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. 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. 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: 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
- Öppna telefonens inställningar
- öppet batteri
- öppna menyn och välj "batterioptimering"
- Välj "alla appar" från rullgardinsmenyn
- välj appen som du vill vitlista
- 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
}
}
}