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. Tryb drzemki na piance 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. Tryb drzemki na Nugacie 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: Różnice w trybie drzemki 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

  1. Otwórz ustawienia telefonu
  2. otwarta bateria
  3. otwórz menu i wybierz „optymalizacja baterii”
  4. z menu rozwijanego wybierz „wszystkie aplikacje”
  5. wybierz aplikację, którą chcesz umieścić na białej liście
  6. 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
        }
    }
}


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow