Ciągłe częściowe blokady uśpienia

Blokady częściowego budzenia to mechanizm w interfejsie API PowerManager, który pozwala deweloperom zachować działanie procesora po wyłączeniu ekranu urządzenia (czy to z powodu limitu czasu systemu czy naciśnięcia przez użytkownika przycisku zasilania). Aplikacja uzyskuje częściową blokadę uśpienia, wywołując funkcję acquire() z flagą PARTIAL_WAKE_LOCK. Blokada częściowego budzenia zawiesza się, jeśli aplikacja jest uruchomiona w tle przez dłuższy czas (żadna część aplikacji nie jest widoczna dla użytkownika). To powoduje zużywanie się baterii, ponieważ uniemożliwia urządzeniu przejście w stany o niższym poborze mocy. Blokady częściowego budzenia należy używać tylko wtedy, gdy jest to konieczne, i odblokowywać je, gdy nie są już potrzebne.

Jeśli w Twojej aplikacji występuje problem z blokadą częściowego budzenia, możesz skorzystać z instrukcji na tej stronie, aby zdiagnozować i rozwiązać problem.

Wykrywanie problemu

Nie zawsze możesz wiedzieć, że w Twojej aplikacji występują częściowe blokady uśpienia. Jeśli aplikacja została już opublikowana, Android Vitals może pomóc Ci wykryć problem.

Android Vitals

Dane Android Vitals mogą pomóc Ci poprawić działanie aplikacji, ostrzegając Cię w Konsoli Play, gdy aplikacja ma problemy z blokowaniem częściowych blokad przebudzenia. Android Vitals zgłasza częściowe blokady uśpienia jako zablokowane, gdy w sesji baterii wystąpi co najmniej 1 godzinna częściowa blokada uśpienia w tle.

Definicja sesji baterii zależy od wersji platformy.

  • W Androidzie 10 sesja baterii to zbiór wszystkich raportów o stanie baterii, które zostały odebrane w ciągu danego 24-godzinnego okresu. Raport o stanie baterii odnosi się do przedziału czasu między dwoma ładowaniami baterii od poziomu naładowania poniżej 20% do powyżej 80% lub od dowolnego poziomu do 100%.
  • W Androidzie 11 sesja baterii to stały okres 24 godzin.

Wyświetlana liczba sesji baterii jest wartością zbiorczą dla wszystkich zmierzonych użytkowników aplikacji. Informacje o tym, jak Google Play zbiera dane Android Vitals, znajdziesz w dokumentacji Konsoli Play.

Gdy stwierdzisz, że Twoja aplikacja ma zbyt wiele zablokowanych częściowych blokad aktywacji, musisz rozwiązać ten problem.

Rozwiąż problem

Blokady aktywacji mogą wyczerpywać baterię urządzenia, dlatego nie należy ich używać, jeśli istnieje inna możliwość. Dokumentacja Wybór odpowiedniego interfejsu API do utrzymywania urządzenia w stanie czuwania pomoże Ci znaleźć najlepsze rozwiązanie dla Twojej aplikacji.

Jeśli musisz użyć blokady aktywacji, zachowaj te sprawdzone metody, aby mieć pewność, że blokada nie wpłynie negatywnie na wydajność urządzenia. W szczególności upewnij się, że każde urządzenie, które kupisz, jest odblokowane, i jak najszybciej odblokuj je.

Po rozwiązaniu problemu w kodzie sprawdź, czy aplikacja prawidłowo odblokowuje blokady aktywacji, korzystając z tych narzędzi:

  • dumpsys – narzędzie, które udostępnia informacje o stanie usług systemowych na urządzeniu. Aby wyświetlić stan usługi zasilania, w tym listę blokad aktywacji, uruchom adb shell dumpsys power.

  • Battery Historian – narzędzie, które przetwarza dane wyjściowe z raportu o błędach w Androidzie na wizualną reprezentację zdarzeń związanych z zasilaniem.