Ciągłe częściowe blokady 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. Częściowa blokada uśpienia staje się ciągła, jeśli jest utrzymywana przez długi czas, a aplikacja działa w tle (żadna jej część nie jest widoczna dla użytkownika). Ten stan 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 w aplikacji masz ciągłą częściową blokadę uśpienia, możesz skorzystać z informacji na tej stronie, aby zdiagnozować i rozwiązać problem.

Wykrywanie problemu

Nie zawsze możesz wiedzieć, że częściowe blokady uśpienia w Twojej aplikacji są ciągłe. Jeśli aplikacja została już opublikowana, w wykryciu problemu może Ci pomóc Android Vitals.

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 ciągła częściowa blokada uśpienia. Android Vitals zgłasza częściowe blokady uśpienia jako ciągłe, kiedy w ciągu 24 godzin wystąpi co najmniej jedna godzinna częściowa blokada uśpienia, a aplikacja działa w tle.

Wyświetlana liczba sesji baterii to łączna liczba sesji wszystkich objętych pomiarem użytkowników aplikacji. Więcej informacji o tym, jak Google Play zbiera dane Android Vitals, znajdziesz w dokumentacji Konsoli Play.

Gdy dowiesz się, że w aplikacji występują ciągłe częściowe blokady uśpienia, musisz rozwiązać ten problem.

Rozwiązanie problemu

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.

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

Zobacz również