Oszczędzaj energię i baterię

Słowa kluczowe: wearos, moc, bateria, wydajność

Wydajność energetyczna jest szczególnie ważna na Wear OS. Zasady projektowania systemu Wear OS koncentrują się głównie na zużyciu energii urządzenia, ponieważ zegarek jest niewielki i przeznaczony do krótkich interakcji.

W porównaniu z większymi urządzeniami mobilnymi urządzenia z Wear OS mają mniejsze baterie, więc każde zużycie baterii jest bardziej zauważalne. Poza tym ładowanie urządzenia z Wear OS wymaga od użytkownika więcej wysiłku niż ładowanie urządzenia mobilnego. Użytkownicy mogą ładować swoje urządzenia mobilne w różnych odstępach czasu w ciągu dnia, ale przed naładowaniem urządzenia z Wear OS muszą je odpiąć od ciała.

Aby zwiększyć efektywność energetyczną aplikacji, stosuj te sprawdzone metody projektowania:

  • Projekt aplikacji powinien dobrze wykorzystywać możliwości formatu Wear OS. Nie może ona bezpośrednio kopiować Twojej aplikacji mobilnej.
  • Używaj istniejącej aplikacji mobilnej, aby ułatwić sobie korzystanie z usługi w określonych przypadkach. Na przykład: internet i synchronizacja na zegarku są drogie; zastanów się, czy urządzenie mobilne może wykonać ciężką pracę, a urządzenie z Wear OS będzie otrzymywać zmiany w danych.
  • Zaprojektuj przypadki użycia, aby były krótsze.
  • Zastanów się, których zdarzeń Wear OS używasz i jak często się one pojawiają.
  • W miarę możliwości odłóż działanie aplikacji do czasu, gdy zegarek się ładuje. Dotyczy to zwłaszcza zadań wymagających dużej ilości danych, takich jak porządkowanie baz danych i synchronizowanie danych.

    Jeśli urządzenie jest ładowane i ma połączenie z Wi-Fi, zaplanuj zadania, aby wstępnie pobierać dane, obrazy i aktualizacje, które użytkownik prawdopodobnie chce zobaczyć w aplikacji.

Z tego przewodnika dowiesz się, kiedy i jak system uruchamia aplikację oraz jak ograniczyć czas jej działania i zużycie baterii. Aby dowiedzieć się więcej o tym, jak wykonuje się określone czynności, np. wczytywanie aplikacji czy przewijanie listy, zapoznaj się z informacjami dotyczącymi wydajności, np. z przewodnikiem po wydajności aplikacji na Wear OS.

Monitorowanie wykorzystania baterii na przestrzeni czasu

Aby przeanalizować statystyki baterii urządzenia z Wear OS, na którym działa Twoja aplikacja, wpisz w oknie terminala na komputerze deweloperskim to polecenie:

adb shell dumpsys batterystats

Biblioteka na GitHubie zawiera analizy statystyk baterii, które mogą być przydatne do uruchomienia wraz z tym poleceniem.

Zdarzenia wpływające na czas pracy na baterii

Zanim zaczniesz myśleć o swojej aplikacji, warto ogólnie zastanowić się nad zdarzeniami, które zużywają energię na urządzeniu z Wear OS.

Poniższa tabela pokazuje wpływ na czas pracy baterii w przypadku kilku typowych zdarzeń w aplikacjach na Wear OS. Dokładne zużycie energii zależy od urządzenia.

Wydarzenie Wpływ na czas pracy na baterii Jak ograniczyć
dostęp do sieci, w tym LTE i Wi-Fi; Bardzo wysoka Odrocz niepotrzebny dostęp do sieci do czasu, gdy urządzenie będzie miało ładunek.
Włączanie ekranu i uruchamianie trybu interaktywnego Wysoki Nie zachęcaj użytkownika do dłuższego niż to konieczne włączania ekranu. Zapewnij obsługę trybu zawsze włączonego, znanego też jako tryb ambient.
Dostęp do czujnika GPS Wysoki Jeśli to możliwe, zaczekaj, aż użytkownik poprosi o dostęp do GPS.
Utrzymaj wysokie wykorzystanie procesora Wysoki Używaj przepływów w Jetpack Compose.
Dostęp do czujnika tętna Średni Korzystaj z czasu czuwania procesora podczas otrzymywania wywołań zwrotnych z interfejsu Sensor API, na przykład podczas korzystania z usług zdrowotnych na Wear OS.
Dostęp do innego urządzenia przez Bluetooth Średni Sesje powinny być krótkie.
Blokada wybudzenia Średni Ogranicz ręczne tworzenie blokad aktywacji i używaj ich w ramach WorkManager.

Minimalizowanie czasu włączonego ekranu

W aplikacji na Wear OS postępuj zgodnie z tymi zasadami korzystania z ekranu:

  • Blokada ekranu: unikaj jej, jeśli to możliwe. Aby przeprowadzić test, wyłącz Zawsze aktywny ekran w ustawieniach systemu i obserwuj, czy ekran wyłączy się w okresie limitu czasu.
  • Animacje: ograniczaj skomplikowane animacje i skoncentruj się na krótkich przejściach, aby reklama wyglądała bardziej profesjonalnie. Unikaj zwłaszcza animacji i pętli o długim czasie trwania. Jeśli wymagana jest pętla, dodaj między pętlami przerwę o długości co najmniej równej długości samej animacji.
  • Czas działania w trybie ambient: obsługa trybu zawsze włączonego w potrzebnych przypadkach, np. w przypadku zastosowań związanych z fitnessem. Jeśli Twoja aplikacja wymaga trybu zawsze włączonego, sprawdź, czy spełnia ona te wymagania, gdy urządzenie jest w trybie otoczenia:

    • Zmniejsza odsetek podświetlonego ekranu urządzenia.
    • Nie wyświetla animacji.
    • Nie aktualizuje treści ekranu, z wyjątkiem sytuacji, gdy onAmbientUpdate() skontaktuje się z Tobą telefonicznie.

Minimalizowanie wykorzystania procesora

W aplikacji na Wear OS przestrzegaj tych zasad dotyczących wykorzystania procesora:

  • Korzystanie z usługi powinno być krótkie.
  • Wykonuj powiązane operacje w grupach, aby zmaksymalizować czas bezczynności procesu aplikacji.

Minimalizuj blokady aktywacji

W większości przypadków należy unikać operacji, które uniemożliwiają aplikacji przejście w stan uśpienia, takich jak blokada wybudzania. Na przykład w przypadku aplikacji związanych ze zdrowiem i fitnessem długotrwałe treningi nie wymagają funkcji wakelock. Używaj czasu czuwania procesora podczas otrzymywania wywołań zwrotnych z interfejsu API czujnika, np. podczas korzystania z usług zdrowotnych na Wear OS.

W niektórych przypadkach można uzyskać blokadę aktywacji, na przykład gdy aplikacja wykonuje jedną z tych czynności:

  • odtwarzanie multimediów w tle,
  • Używa biblioteki WorkManager lub JobScheduler. (system blokuje w Twoim imieniu dostęp do WakeLocka podczas wykonywania zadania w tle).

Historia baterii pozwala zobaczyć poszczególne wystąpienia długich blokad aktywacji, a także podsumowania łącznej liczby blokad i ich czasu trwania. Sprawdź liczbę i czas trwania blokad aktywacji, które posiada Twoja aplikacja, i porównaj te informacje z interaktywnymi wzorami użytkowania aplikacji:

  • Sprawdź, czy nie ma nieoczekiwanych blokad budzenia.
  • Jeśli czas trwania jest dłuższy niż oczekiwano, sprawdź, czy prace nie są blokowane przez jakąś zależność, np. dostępność sieci.

Sprawdzanie, jak aplikacja staje się nieaktywna

Zastanów się, co robi aktywna aplikacja, gdy występują kluczowe zdarzenia na urządzeniu, takie jak:

  • Ekran się wyłączy, a urządzenie przejdzie w tryb nieaktywny.
  • Aplikacja została odrzucona przez przesunięcie.

Aby analizować aktywność w aplikacji, użyj narzędzi opisanych w następnych sekcjach.

Power Profiler

Narzędzie Power Profiler jest dostępne w menu Android Studio po kliknięciu Widok > Okna narzędzi > Profiler:

  1. Sprawdź ślad systemu, gdy ekran się wyłącza, a urządzenie przechodzi w tryb oszczędzania energii.
  2. Sprawdź, czy urządzenie nadal wykonuje jakieś zadania, i sprawdź poziom wykorzystania procesora.

Perfetto

Perfetto umożliwia rejestrowanie śladów, a następnie sprawdzanie aplikacji pod kątem obecności wątków wykonujących jakieś operacje, gdy ekran jest wyłączony, urządzenie przechodzi w tryb otoczenia lub użytkownik zamknie aktywność aplikacji.

Zdefiniuj zdarzenia niestandardowe, aby oznaczać ważne zdarzenia w aplikacji, w tym zdarzenia związane z danymi domenami. W przypadku aplikacji multimedialnej obejmuje to takie zadania jak pobieranie playlist, pobieranie konkretnego elementu multimedialnego, uruchamianie odtwarzania i zatrzymywanie odtwarzania. Po zdefiniowaniu tych zdarzeń możesz je wyświetlać w Perfetto i porównywać ich czas trwania z wykorzystaniem procesora i mocy w aplikacji.

Analizowanie zaplanowanych zadań aplikacji

Zaplanowane zadania, korzystające z WorkManager, umożliwiają wykonywanie w aplikacji działań w tle. Chociaż niektóre zadania w tle muszą być okresowe, nie uruchamiaj ich zbyt często ani na zbyt długi czas, ponieważ może to wyczerpać baterię urządzenia.

Użyj Battery Historian, aby sprawdzić wykonanie zaplanowanych zadań, zarówno ogólnie (Statystyki systemu > Statystyki harmonogramu zadań), jak i według aplikacji (Statystyki aplikacji > Zaplanowane zadanie). Sprawdź łączną liczbę i łączny czas trwania:

  • Jeśli zadanie jest wykonywane bardzo często, rozważ zmniejszenie tej częstotliwości.
  • Sprawdź, czy całkowity czas wykonania jest zgodny z oczekiwaniami i nie jest znacznie dłuższy.

Sprawdź też wykres Historyk baterii, zwracając uwagę na każdy wpis JobScheduler. Gdy najedziesz kursorem na konkretny wpis, Battery Historian wyświetli właściciela zadania. Weź pod uwagę następujące kwestie:

  • Czas wykonywania aplikacji powinien być odpowiedni.
  • Zastanów się, czy zadania są wykonywane, gdy aplikacja jest uruchomiona, czy też są to zadania okresowe wykonywane w tle.

Czujniki

Urządzenia z Wear OS mają wiele różnych czujników, np. GPS. W większości przypadków zamiast interakcji bezpośrednio z usługą SensorManager należy korzystać z usług zdrowotnych na Wear OS. W wielu przypadkach usługi zdrowotne inteligentnie grupowały dane, aby zwiększyć wydajność baterii.

Aby przeanalizować użycie czujnika w aplikacji, uruchom w terminalu to polecenie na komputerze deweloperskim:

adb shell dumpsys sensorservice

Wyniki tego polecenia pokazują:

  • Obecne i poprzednie rejestracje czujników.
  • Konfiguracja czujnika, w tym grupowanie, jeśli jest ustawione.
  • dane, które zostały niedawno próbkowane;

Testowanie anulowania rejestracji z czujników

Aby sprawdzić, czy aplikacja przestaje pobierać dane z czujników zgodnie z oczekiwaniami, przetestuj te scenariusze:

  1. Zamknij aplikację, przesuwając ją w bok.
  2. Dotknij ekranu dłonią. Spowoduje to wyłączenie ekranu lub przełączenie go w tryb nieaktywny.

Użyj polecenia ADB z poprzedniej sekcji, aby sprawdzić, czy czujnik jest prawidłowo wyświetlany jako niezarejestrowany.

Warstwa danych

Gdy używasz interfejsu Data Layer API, każda transmisja zużywa pewną ilość energii. W szczególności, jeśli używasz tego interfejsu API do wysyłania danych, aplikacja musi się obudzić, aby je otrzymać. Z tych powodów należy ostrożnie korzystać z tego interfejsu API.

Oto kilka dodatkowych sprawdzonych metod korzystania z interfejsu Data Layer API:

  • Zanim skonfigurujesz odbiornik za pomocą funkcji WearableListenerService, poczekaj, aż aplikacja będzie aktywna.
  • Przesyłaj zmiany stanu zamiast konfigurować szybkie aktualizacje. Te zmiany stanu umożliwiają urządzeniu z Wear OS wykonywanie obliczeń danych lokalnych, np. w momencie rozpoczęcia sesji treningowej.

    Przesyłaj tylko zmiany stanu, które aktualizują interfejs. Jeśli na przykład ekran aktywności pokazuje tylko „przebieg w kilometrach” z dokładnością do jednego miejsca po przecinku, nie wysyłaj zmiany stanu do Wear OS za każdym razem, gdy użytkownik przemieści się o jeden metr.

Aby przeanalizować wykorzystanie interfejsu Data Layer API w aplikacji, uruchom to polecenie w oknie terminala na komputerze deweloperskim:

adb shell dumpsys activity service WearableService

Wyniki tego polecenia obejmują:

  • RpcService: pozwala sprawdzić, jak często i które ścieżki są wywoływane za pomocą funkcji MessageClient.
  • DataService: pozwala sprawdzić, jak często elementy danych są ustawiane za pomocą funkcji DataClient.

Aplikacje do dbania o zdrowie i kondycję

Jeśli masz aplikację związaną ze zdrowiem i fitnessem, użyj Usług zdrowotnych, aby zoptymalizować korzystanie z czujników przez aplikację.

  • W przypadku ExerciseClient użyj Battery Historian, aby sprawdzić prawidłowe działanie w trybie Ambient. Sprawdź, czy Twoja aplikacja nie budzi się częściej niż co minutę lub co 2 minuty, aby otrzymywać dane ExerciseUpdate.
  • Aby monitorować ogólny stan zdrowia przez cały dzień, użyj funkcji PassiveMonitoringClient, zgodnie z opisem w przewodniku dotyczącym monitorowania danych o zdrowiu i aktywności fizycznej w tle.

Kafelki i widżety

Jeśli Twoja aplikacja obsługuje płytkę lub komplikację, zastosuj te sprawdzone metody:

  • Wyłącz automatyczne odświeżanie lub zwiększ częstotliwość odświeżania do 2 godzin lub więcej.
  • Do wysyłania aktualizacji danych używaj Komunikacji w chmurze Firebase (FCM) lub odpowiednio zaplanowanych zadań. Unikaj szybkiego wprowadzania aktualizacji, ponieważ może to spowodować planowanie przez system powtarzających się zadań w szybszym tempie niż użytkownik lub platforma mogą uzyskać dostęp do danych potrzebnych do wykonania tych zadań.
  • Nie planuj pracy dla kafelka ani widżetu, gdy użytkownik z nimi nie wchodzi w interakcję.
  • Stosuj metody oparte na dostępie offline.
  • udostępniać jedną bazę danych w aplikacji głównej, kafelkach i komplikacjach; Pomaga to też zachować spójność danych na różnych elementach interfejsu.