Zbyt wiele częściowych blokad uśpienia

Częściowe blokady uśpienia to mechanizm w interfejsie PowerManager API, który pozwala programistom 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ę uśpienia, wywołując acquire() z flagą PARTIAL_WAKE_LOCK lub używając innych interfejsów API, które uzyskują blokady uśpienia. Nadmierne korzystanie z częściowych blokad uśpienia wyczerpuje baterię urządzenia, ponieważ uniemożliwia mu przejście w stan niskiego zużycia energii. Częściowe blokady uśpienia powinny być używane wyłącznie w razie potrzeby i zwalniane, gdy tylko przestaną być 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.

Wykrywanie problemu

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

Android Vitals

Android Vitals może pomóc Ci poprawić działanie aplikacji, wysyłając alert w Konsoli Play za każdym razem, gdy w aplikacji wystąpi nadmierne użycie częściowych blokad uśpienia.

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, które dotyczą dźwięku, lokalizacjiJobScheduler.

Panel Nadmierne częściowe blokady uśpienia w Androidzie zawiera podział nazw blokad uśpienia, które nie są zwolnione z tego obowiązku i są powiązane z aplikacją. Pokazuje on sesje, których to dotyczy, oraz czas trwania.

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 w aplikacji występuje zbyt wiele częściowych blokad uśpienia, musisz rozwiązać ten problem.

Rozwiąż problem

Blokady uśpienia 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 przechodzeniu urządzenia w stan uśpienia, znajdziesz najlepsze rozwiązanie dla swojej aplikacji.

Jeśli musisz użyć blokady uśpienia, postępuj zgodnie ze sprawdzonymi metodami dotyczącymi blokad uśpienia, aby nie pogorszyć wydajności urządzenia. W szczególności zadbaj o to, aby każda wywołana blokada została jak najszybciej zwolniona.

Aplikacja może też używać blokad uśpienia, nawet jeśli nie uzyskujesz ich jawnie. 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, które interfejsy API mogły je utworzyć.

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

Zobacz również