Android 9 (poziom interfejsu API 28) wprowadza nowe funkcje, które poprawiają zarządzanie energią na urządzeniu. Te zmiany, wraz z funkcjami dostępnymi już w poprzednich wersjach, pomagają zapewnić zasoby systemowe aplikacjom, które ich najbardziej potrzebują.
Funkcje zarządzania zasilaniem można podzielić na 2 kategorie:
- Zasobniki gotowości aplikacji
- System ogranicza dostęp aplikacji do zasobów urządzenia, takich jak procesor czy bateria, na podstawie wzorców użytkowania użytkownika. To jest nowa funkcja usługi Android 9.
- Ulepszenia oszczędzania baterii
- Gdy włączone jest Oszczędzanie baterii, system nakłada ograniczenia na wszystkie aplikacje. To jest funkcja, która została ulepszona w Androidzie 9.
Grupy aplikacji w trybie czuwania
Android 9 wprowadza nową funkcję zarządzania baterią, czyli grupy w stanie gotowości aplikacji. Zasoby w rezerwie pomagają systemowi ustalać priorytety żądań zasobów przez aplikacje na podstawie tego, jak często i jak dawno były używane. Na podstawie danych o korzystaniu z aplikacji aplikacji, każda aplikacja jest umieszczona w jednym z 5 grup priorytetów. System ogranicza zasoby urządzenia dostępne dla każdej aplikacji na podstawie zasobnika, .
Aplikacje są podzielone na 5 grup według tych cech:
- Aktywne
Aplikacja jest w aktywnym zasobniku, jeśli użytkownik obecnie z niej korzysta, przez przykład:
- Aplikacja uruchomiła aktywność
- Aplikacja uruchamia usługę na pierwszym planie
- Aplikacja ma adapter synchronizacji powiązany z dostawcą treści używanym przez aplikacja na pierwszym planie
- użytkownik klika powiadomienie w aplikacji,
Jeśli aplikacja znajduje się w grupie aktywnych aplikacji, system nie nakłada żadnych ograniczeń na zadania, alarmy ani wiadomości FCM tej aplikacji.
- Zestaw roboczy
Aplikacja znajduje się w grupie zbioru roboczego, jeśli jest często uruchamiana, ale obecnie nie jest aktywna. Na przykład aplikacja mediów społecznościowych, którą użytkownik uruchamia przez większość dni, prawdopodobnie znajduje się w zestawie roboczym. Aplikacje są też przenoszone do zestawu roboczego, jeśli są używane pośrednio.
Jeśli aplikacja znajduje się w zestawie roboczym, system nakłada na nią niewielkie ograniczenia uruchamianie zadań i aktywowanie alarmów. Więcej informacji: Ograniczenia dotyczące zarządzania energią.
- Częste
Aplikacja znajduje się w częstym zasobniku, jeśli jest używana regularnie, ale niekoniecznie zainteresowanych informacjami ze świata. Na przykład aplikacja do śledzenia treningów, której użytkownik używa na siłowni, może znajdować się w grupie często używanych aplikacji.
Jeśli aplikacja znajduje się w częstym zasobniku, system nakłada silniejsze ograniczenia na jego zdolność do uruchamiania zadań i uruchamiania alarmów, a także nakłada ograniczenia na wiadomości w FCM o wysokim priorytecie. Więcej informacji znajdziesz w artykule Ograniczenia związane z zarządzaniem energią.
- Rzadkie
Aplikacja jest rzadko używana, jeśli nie jest często używana. Na przykład aplikacja hotelowa, której użytkownik używa tylko podczas pobytu w hotelu, może należeć do rzadkich.
Jeśli aplikacja znajduje się w rzadkim zasobniku, system nakłada ścisłe ograniczenia na jej możliwość uruchamiania zadań, uruchamiania alarmów i odbierania wiadomości FCM o wysokim priorytecie. System ogranicza też możliwość połączenia aplikacji z internetem. Dla: Więcej informacji znajdziesz w sekcji Ograniczenia dotyczące zarządzania energią.
- Nigdy
Aplikacje, które zostały zainstalowane, ale nigdy nie były uruchamiane, są przypisywane do grupy nigdy. System nakłada na te aplikacje poważne ograniczenia.
System dynamicznie przypisuje każdą aplikację do zbioru priorytetów i w razie potrzeby przypisuje aplikacje ponownie. System może polegać na wstępnie załadowanej aplikacji, która używa komputera ustalające prawdopodobieństwo i przypisuje je do odpowiednich segmentów. Jeśli system aplikacji nie ma na urządzeniu, system domyślnie sortuje aplikacje na podstawie od kiedy były używane. Do zasobników, które są przypisane do bardziej aktywnych aplikacji nadanie aplikacjom wyższego priorytetu, więcej zasobów systemowych dostępnych dla aplikacji. Przede wszystkim zasobnik określa częstotliwość uruchamiania zadań w aplikacji oraz jak często może się ona aktywować; alarmów i częstotliwości otrzymywania przez aplikację ustawienia Firebase Cloud o wysokim priorytecie Wiadomości (FCM). Te ograniczenia obowiązują tylko wtedy, gdy urządzenie jest zasilane z baterii. Podczas ładowania urządzenia system nie nakłada tych ograniczeń na aplikacje.
Każdy producent może określić własne kryteria przypisywania nieaktywnych aplikacji do grup. Nie próbuj wpływać na to, do której grupy zostanie przypisana Twoja aplikacja. Zamiast tego skup się na tym, aby aplikacja działała prawidłowo w ramach danego zasobu. Aplikacja może się dowiedzieć, w jakiej puli znajduje się obecnie, wywołując nową metodę UsageStatsManager.getAppStandbyBucket()
.
Sprawdzone metody
Jeśli Twoja aplikacja stosuje już sprawdzone metody dotyczące uśpienie i tryb czuwania aplikacji, obsługa nowych funkcji zarządzania energią nie powinna być trudna. Jednak niektóre zachowania aplikacji, które wcześniej działały dobrze, mogą teraz powodować problemy.
- Nie próbuj manipulować systemem, aby umieścić aplikację w jednym zasobniku ani innego użytkownika. Metody grupowania systemu mogą się zmieniać, a każdy producent urządzeń może napisać własną aplikację do grupowania z własnym algorytmem. Upewnij się, że aplikacja zachowuje się właściwie niezależnie od tego, do określonego zasobnika.
- Jeśli aplikacja nie ma aktywności w widżecie, może nigdy nie zostać przeniesiona do aktywnego zasobnika. Warto przeprojektować aplikację, aby miała tak działania.
- Jeśli powiadomienia aplikacji nie zawierają przycisków, użytkownicy nie będą mogli wywołać promocji aplikacji w aktywnej puli, klikając powiadomienia. W W takiej sytuacji warto zmienić wygląd odpowiednich powiadomień, odpowiedź użytkownika. Niektóre wskazówki znajdziesz tutaj: Material Design wzoru powiadomień .
Podobnie, jeśli aplikacja nie wyświetli powiadomienia po otrzymaniu o wysokim priorytecie w FCM, nie daje użytkownikowi możliwości interakcji z aplikacją, więc nie dają jej możliwości aktywnego zasobnika. W zasadzie jedynym przeznaczeniem wiadomości FCM o wysokim priorytecie jest wysyłanie powiadomień do użytkownika, więc taka sytuacja nie powinna mieć miejsca. Jeśli nieprawidłowo oznacza wiadomość FCM jako o wysokim priorytecie, gdy nie zostanie wysłana interakcje użytkownika mogą mieć inne negatywne konsekwencje, na przykład może spowodować wyczerpanie limitu przez aplikację, co jest bardzo pilne Wiadomości FCM będą traktowane jak wiadomości o normalnym priorytecie.
Uwaga: jeśli użytkownik wielokrotnie odrzuci powiadomienie, system umożliwia użytkownikowi zablokowanie powiadomienia w przyszłości. Nie spamuj użytkownika powiadomieniami tylko po to, by aplikacja znalazła się w aktywny zasobnik!
Jeśli aplikacje są podzielone na kilka pakietów, mogą się one znajdować w różne zasobniki i tym samym różne poziomy dostępu. Należy pamiętać o testować takie aplikacje za pomocą pakietów przypisanych do różnych zasobników. działa prawidłowo.
Ulepszenia oszczędzania baterii
W Androidzie 9 wprowadzono wiele ulepszeń w trybie oszczędzania baterii. Dokładne ograniczenia określa producent urządzenia. Na przykład w przypadku wersji AOSP system stosuje te ograniczenia:
- System przełącza aplikacje w tryb gotowości w bardziej agresywny sposób, zamiast czekać, aż aplikacja przejdzie w stan bezczynności.
- Limity wykonywania w tle dotyczą wszystkich aplikacji bez względu na docelowy poziom interfejsu API.
- Usługi lokalizacyjne mogą być wyłączone, gdy ekran jest wygaszony.
- Aplikacje działające w tle nie mają dostępu do sieci.
Dostępne są też inne optymalizacje zasilania dostosowane do różnych urządzeń. Pełny Więcej informacji znajdziesz na stronie opisującej zarządzanie energią ograniczenia.
Jak zawsze, warto przetestować aplikację, gdy aktywne jest Oszczędzanie baterii. Ty Można ręcznie włączyć oszczędzanie baterii, wybierając na urządzeniu Ustawienia > Akumulatorowe Oszczędzanie.
Testowanie i rozwiązywanie problemów
Nowe funkcje zarządzania zasilaniem wpływają na wszystkie aplikacje działające na urządzeniach z Androidem 9, niezależnie od tego, czy są one kierowane na tę wersję systemu. Ważne jest, aby aplikacja działała prawidłowo na tych urządzeniach.
Pamiętaj, aby przetestować główne przypadki użycia aplikacji w różnych warunkach, aby sprawdzić, jak funkcje zarządzania energią współdziałają ze sobą. Możesz używać systemu Android Debug Bridge, aby włączyć niektóre włączanie i wyłączanie funkcji.
Polecenia Android Debug Bridge
Możesz używać poleceń powłoki narzędzia Android Debug Bridge. aby przetestować kilka funkcji zarządzania energią.
Informacje o używaniu ADB do przełączenia urządzenia w tryb Doze znajdziesz w artykule Testowanie w trybie Doze i w trybie w stacji dokującej aplikacji.
Grupy aplikacji w trybie czuwania
Za pomocą ADB możesz ręcznie przypisać aplikację do puli aplikacji w stanie gotowości. Aby zmienić zasobnik aplikacji, użyj tego polecenia:
$ adb shell am set-standby-bucket packagename active|working_set|frequent|rare
Możesz też użyć tego polecenia, aby ustawić wiele pakietów naraz:
$ adb shell am set-standby-bucket package1 bucket1 package2 bucket2...
Aby sprawdzić, w jakim zasobniku znajduje się aplikacja, uruchom polecenie
$ adb shell am get-standby-bucket [packagename]
Jeśli nie przekażesz parametru packagename, w tym poleceniu pojawi się lista
dla wszystkich aplikacji. Aplikacja może też poznać swoją grupę w czasie wykonywania, wywołując nową metodę UsageStatsManager.getAppStandbyBucket()
.
Oszczędzanie baterii
Aby sprawdzić, jak aplikacja działa w trybie niskiego poboru mocy, możesz użyć kilku poleceń.
Aby symulować odłączenie urządzenia, użyj polecenia
$ adb shell dumpsys battery unplug
Aby sprawdzić działanie urządzenia w warunkach słabego zasilania, użyj tego polecenia:
$ adb shell settings put global low_power 1
Po zakończeniu testowania możesz cofnąć ręczne ustawienia urządzenia tym poleceniem:
$ adb shell dumpsys battery reset