Android
Tryb drzemki
Szukaj…
Uwagi
Tryb drzemki to zestaw zmian i zasad, które uśpią telefon w stanie bezczynności.
W Androidzie 6.0 Marshmallow: Tryb drzemki włącza się po chwili, gdy ekran jest wyłączony, urządzenie jest nieruchome i działa na baterii. Jak widać na powyższym schemacie, gdy aktywowany jest tryb drzemki, urządzenie nie otrzymuje żadnych wakelocków, dostępu do sieci, zadań / synchronizacji, alarmów, skanów GPS / Wi-Fi.
W Androidzie 7.0 Nougat: wyobraź sobie, że jeśli masz telefon w kieszeni (ekran jest wyłączony, działa na baterii, ale nie jest stacjonarny), możesz również chcieć uzyskać funkcje trybu drzemki, prawda? Właśnie dlatego Google ogłosił tryb rozszerzonego drzemki: działa, gdy ekran jest wyłączony, ale nie stacjonarny. Jak widać na tym schemacie, wyłączono tylko dostęp do sieci oraz zadania / synchronizacje. Zauważ, że Extended Doze nie zastępuje pierwszego trybu Doze. Działają razem, w zależności od stanu telefonu (stacjonarny lub nie). Oto różnice: Programiści powinni pamiętać, że:
- Doze może zachować tymczasowy wakelock i dostęp do sieci dla wiadomości GCM o wysokim priorytecie (Google Cloud Messaging) (w przypadkach, gdy użytkownik potrzebuje natychmiastowego powiadomienia);
- Usługi pierwszego planu (takie jak odtwarzanie muzyki) będą nadal działać.
Więcej informacji można znaleźć tutaj: https://developer.android.com/training/monitoring-device-state/doze-standby.html
Wyklucz aplikację z trybu drzemki
- Otwórz ustawienia telefonu
- otwarta bateria
- otwórz menu i wybierz „optymalizacja baterii”
- z menu rozwijanego wybierz „wszystkie aplikacje”
- wybierz aplikację, którą chcesz umieścić na białej liście
- wybierz „nie optymalizuj”
Teraz ta aplikacja będzie wyświetlana w niezoptymalizowanych aplikacjach.
Aplikacja może sprawdzić, czy jest na białej liście, wywołując isIgnoringBatteryOptimizations()
Programowe dodawanie do białej listy aplikacji na Androida
Biała lista nie wyłączy trybu drzemki dla twojej aplikacji, ale możesz to zrobić za pomocą blokad sieciowych i blokowania czuwania.
Programowe umieszczanie białej aplikacji na Androida można wykonać w następujący sposób:
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);
}
Wynik rozpoczęcia powyższej czynności można zweryfikować za pomocą następującego kodu:
@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
}
}
}