Zbyt wiele częściowych blokad uśpienia

Częściowa blokada uśpienia to mechanizm w interfejsie PowerManager API, który pozwala deweloperom utrzymać działanie procesora po wyłączeniu wyświetlacza urządzenia (czy to z powodu przekroczenia limitu czasu systemu, czy naciśnięcia przycisku zasilania przez użytkownika). Aplikacja uzyskuje częściową blokadę wybudzania, wywołując funkcję acquire() z flagą PARTIAL_WAKE_LOCK lub korzystając z innych interfejsów API, które uzyskują blokady wybudzania. Nadmierne korzystanie z częściowych blokad wybudzania wyczerpuje baterię urządzenia, ponieważ uniemożliwia mu przejście w stan niskiego zużycia energii. Częściowe blokady wybudzania powinny być używane tylko wtedy, gdy jest to konieczne, i zwalniane, gdy nie są już potrzebne.

Jeśli Twoja aplikacja nadmiernie korzysta z częściowych blokad uśpienia, możesz skorzystać z informacji na tej stronie, aby zdiagnozować i rozwiązać problem.

Twoja opinia jest kluczowa dla ulepszania naszej dokumentacji. Prześlij nam opinię, korzystając z tego linku:

Przesyłanie opinii

Wykrywanie problemu

Android Vitals może pomóc Ci sprawdzić, kiedy Twoja aplikacja nadmiernie korzysta z częściowych blokad uśpienia.

Android Vitals

Android Vitals może pomóc Ci poprawić działanie aplikacji, alertując Cię w Konsoli Play, gdy aplikacja nadmiernie korzysta z częściowych blokad wybudzania.

Android Vitals zgłasza użycie częściowej blokady uśpienia jako nadmierne, gdy wszystkie częściowe blokady uśpienia trwają łącznie co najmniej 2 godziny w ciągu 24 godzin. Android Vitals śledzi czas trwania blokady uśpienia tylko wtedy, gdy jest ona aktywna, gdy aplikacja działa w tle lub jako usługa na pierwszym planie. Obecnie Android Vitals wyłącza z obliczeń blokady wybudzania utworzone przez interfejsy API zainicjowane przez użytkownika w przypadku dźwięku, lokalizacjiJobScheduler.

Panel Nadmierne częściowe blokady uśpienia w Android Vitals zawiera podział nazw blokad uśpienia niezwiązanych z wyjątkami w Twojej aplikacji. Pokazuje on sesje i czas trwania, których dotyczy problem.

Jeśli nadmierne częściowe blokady uśpienia występują w ponad 5% sesji aplikacji na wszystkich urządzeniach w ciągu 28 dni, może to wpłynąć na widoczność aplikacji w Google Play po zakończeniu testów beta tego wskaźnika.

Gdy dowiesz się, że Twoja aplikacja ma zbyt wiele częściowych blokad uśpienia, musisz rozwiązać ten problem.

Rozwiąż problem

Blokady wybudzania mogą wyczerpywać baterię urządzenia, dlatego nie należy ich używać, jeśli istnieje alternatywa. W dokumentacji dotyczącej wyboru odpowiedniego interfejsu API, który zapobiega przejściu urządzenia w stan uśpienia znajdziesz najlepsze rozwiązanie dla swojej aplikacji.

Jeśli musisz użyć blokady wybudzania, postępuj zgodnie ze sprawdzonymi metodami dotyczącymi blokad wybudzania, aby nie pogorszyć wydajności urządzenia. W szczególności upewnij się, że każde pozyskane urządzenie jest zwolnione, i jak najszybciej zwalniaj blokadę.

Aplikacja może też używać blokad wybudzania, nawet jeśli nie uzyskujesz ich w sposób jawny. Jeśli widzisz blokady wybudzania przypisane do aplikacji, których nie rozpoznajesz, identyfikacja blokad wybudzania utworzonych przez inne interfejsy API może pomóc Ci w określeniu interfejsów API, które mogły je utworzyć.

Po rozwiązaniu problemu w kodzie możesz sprawdzić poprawki za pomocą lokalnych narzędzi do debugowania blokady wybudzania.

Zobacz również