Oszczędzaj energię i baterię

W przypadku Wear OS oszczędność energii jest szczególnie ważna. Zasady projektowania Wear OS skupiają się w dużej mierze na zużyciu energii przez urządzenie, ponieważ zegarek jest niewielkim formatem przeznaczonym do krótkich interakcji.

Urządzenia z Wear OS mają mniejsze baterie w porównaniu z większymi urządzeniami mobilnymi, więc ich zużycie jest bardziej zauważalne. Dodatkowo urządzenie z Wear OS wymaga więcej wysiłku niż urządzenie mobilne. Użytkownicy mogą ładować urządzenia mobilne w różnych odstępach czasu w ciągu dnia, ale muszą odłączyć je od ciała przed ładowaniem.

Aby zwiększyć energooszczędność aplikacji, stosuj te sprawdzone metody:

  • Aplikacja powinna dobrze wykorzystywać format Wear OS. Nie może bezpośrednio kopiować aplikacji mobilnej.
  • Używać istniejącej aplikacji mobilnej w niektórych przypadkach użycia. Na przykład internet i synchronizacja na zegarku są drogie. Zastanów się, czy urządzenie mobilne może wykonywać ciężką pracę, a urządzenie z Wear OS otrzymuje zmiany danych.
  • Zaprojektuj przypadki użycia z myślą o krótszych interakcjach.
  • Zastanów się, których zdarzeń na Wear OS używasz i jak często je występują.
  • W miarę możliwości odkładaj pracę aplikacji do momentu ładowania zegarka. Dotyczy to zwłaszcza zadań wymagających dużych ilości danych, takich jak synchronizacja danych czy porządkowanie baz danych.

    Jeśli urządzenie się ładuje i ma połączenie z Wi-Fi, zaplanuj zadania tak, aby pobierały z wyprzedzeniem dane, obrazy i aktualizacje, które użytkownik prawdopodobnie chce zobaczyć w Twojej aplikacji.

Z tego przewodnika dowiesz się, kiedy i jak system uruchamia Twoją aplikację oraz jak możesz ograniczyć czas działania aplikacji i jej szybkie zużycie. Więcej informacji o wykonywaniu poszczególnych działań, takich jak wczytywanie aplikacji czy przewijanie listy, znajdziesz w wskazówkach dotyczących wydajności, takich jak Przewodnik po wydajności tworzenia wiadomości w Wear OS.

Monitorowanie wykorzystania baterii na przestrzeni czasu

Żeby przeanalizować statystyki baterii na urządzeniu z Wear OS, na którym działa aplikacja, wpisz to polecenie w oknie terminala na komputerze, z którego korzystasz:

adb shell dumpsys batterystats

Biblioteka w GitHubie zawiera pars statystyk baterii, który warto uruchomić razem z tym poleceniem.

Zdarzenia wpływające na żywotność baterii

Zanim zastanowisz się nad samą aplikacją, zastanów się nad zdarzeniami zużywającymi energię urządzeń z Wear OS.

W tabeli poniżej znajdziesz względny wpływ na żywotność 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 żywotność baterii Jak zminimalizować ryzyko
Dostęp do sieci, w tym LTE i Wi-Fi Bardzo wysoka Odrocz mniej ważny dostęp do sieci do czasu ładowania urządzenia.
Włącz ekran i uruchom tryb interaktywny Wysoki Nie zachęcaj użytkownika, aby pozostawał włączony na ekranie dłużej, niż jest to konieczne. Udostępnij środowisko korzystające z trybu zawsze aktywnego, czyli tzw. trybu nieaktywnego.
Dostęp do czujnika GPS Wysoki Jeśli to możliwe, poczekaj, aż użytkownik poprosi o dostęp do GPS.
Utrzymuj wykorzystanie procesora na wysokim poziomie Wysoki Przetwarzanie przepływów w Jetpack Compose
Dostęp do czujnika tętna Medium Używaj czasu przebudzenia procesora podczas odbierania wywołań zwrotnych z interfejsu API czujnika, na przykład podczas korzystania z usług zdrowotnych na Wear OS.
Uzyskiwanie dostępu do innego urządzenia przez Bluetooth Medium Sesje powinny być krótkie.
Przytrzymaj blokadę uśpienia Medium Ogranicz ręczne tworzenie blokad wybudzania i używaj instancji WorkManager.

Skrócenie czasu włączenia ekranu

W aplikacji na Wear OS przestrzegaj tych zasad korzystania z ekranu:

  • Blokady ekranu: unikaj, jeśli to możliwe. Aby przeprowadzić test, wyłącz Zawsze aktywny wyświetlacz w ustawieniach systemu i sprawdź, czy ekran wyłącza się po upływie limitu czasu.
  • Animacje: ogranicz skomplikowane animacje. Zamiast tego skup się na krótkich przejściach, które pozwalają uzyskać bardziej profesjonalny wygląd. Unikaj w szczególności długotrwałych animacji i pętli. Jeśli pętla jest wymagana, dodaj pauzę między pętlami, która jest co najmniej taka sama jak długość samej animacji.
  • Czas przebudzenia w trybie nieaktywnym: obsługa jest zawsze włączona w razie potrzeby, na przykład w przypadku aktywności fizycznej. Jeśli Twoja aplikacja wymaga ciągłego włączenia trybu, sprawdź, czy gdy urządzenie jest w trybie nieaktywnym, wykonuje te czynności:

    • Zmniejsza podświetlenie ekranu urządzenia.
    • Animacje nie są wyświetlane.
    • Nie aktualizuje zawartości ekranu z wyjątkiem wywołania zwrotnego onAmbientUpdate().

Minimalizuj wykorzystanie procesora

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

  • Używaj jak najkrócej.
  • Grupuj wszystkie powiązane operacje, aby zmaksymalizować czas bezczynności procesów w aplikacji.

Minimalizuj blokady uśpienia

W większości przypadków unikaj wszelkich operacji, które uniemożliwiają aplikacji uśpienie, takich jak wybudzanie. Na przykład w aplikacjach związanych ze zdrowiem i aktywnością długotrwałe treningi nie wymagają blokady wybudzenia. Podczas odbierania wywołań zwrotnych z interfejsu sensor API, np. podczas korzystania z usług zdrowotnych w Wear OS, używaj czasu przebudzenia procesora.

W niektórych przypadkach ustawienie blokady wybudzenia jest uzasadnione, np. gdy aplikacja wykona jedną z tych czynności:

  • Odtwarza multimedia w tle.
  • Używa WorkManager lub JobScheduler. Podczas wykonywania zadania w tle system aktywuje funkcję wybudzenia.

Battery Historyn pozwala zobaczyć poszczególne przypadki długich wybudzeń oraz podsumowania całkowitej liczby i czasu trwania blokad wybudzania. Sprawdź liczbę i czas trwania blokad uśpienia aktywnych aplikacji i porównaj te informacje z interaktywnymi wzorcami użytkowania aplikacji:

  • Sprawdź, czy nie wystąpiły nieoczekiwane blokady uśpienia.
  • Jeśli czas trwania jest dłuższy niż zakładany, zastanów się, czy praca nie jest blokowana z jakichś zależności, np. dostępności sieci.

Sprawdź, w jaki sposób aplikacja staje się nieaktywna

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

  • Ekran gaśnie, a urządzenie przechodzi w tryb nieaktywny.
  • Aplikację można zamknąć przesunięciem palca.

Aby analizować aktywność w aplikacjach, użyj narzędzi opisanych w sekcjach poniżej.

Program profilujący energetyzujący

Narzędzie Energy Profiler jest dostępne w menu Android Studio, wybierając Widok > Okna narzędziowe > Profiler:

  1. Sprawdź ślad systemu, gdy ekran wyłącza się i urządzenie przechodzi w tryb nieaktywny.
  2. Sprawdź, czy nie przestają wykonywać pracy, oraz sprawdź poziom wykorzystania procesora przez urządzenie.

Perfetto

Perfetto umożliwia zarejestrowanie logu czasu, a następnie sprawdzenie aplikacji, aby sprawdzić, czy jakieś wątki nie wykonują żadnej pracy po wyłączeniu ekranu, przejściu urządzenia w tryb nieaktywny lub po wyłączeniu przez użytkownika aktywności w aplikacji.

Definiuj zdarzenia niestandardowe, aby oznaczać ważne zdarzenia w aplikacji, w tym zdarzenia związane z domeną. W przypadku aplikacji do multimediów obejmuje to zadania takie jak pobieranie playlist, pobieranie konkretnego elementu multimedialnego, rozpoczynanie i zatrzymywanie odtwarzania. Gdy zdefiniujesz te zdarzenia, możesz je wyświetlić w Perfetto i porównać ich czasy z wykorzystaniem procesora i energii przez aplikację.

Analizowanie zaplanowanych zadań aplikacji

Zaplanowane zadania za pomocą usługi WorkManager umożliwiają wykonywanie w aplikacji pracy w tle. Chociaż niektóre zadania w tle muszą być okresowe, nie uruchamiaj zadań zbyt często ani przez dłuższy czas, ponieważ może to wyczerpać baterię urządzenia.

Użyj narzędzia Battery Historyn, aby sprawdzić wykonanie zaplanowanych zadań, zarówno w odniesieniu do statystyk systemu > Statystyki Jobscheduler), jak i według aplikacji (Statystyki aplikacji > Zaplanowane zadanie). Sprawdź łączną liczbę i cały czas trwania:

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

Sprawdź też wykres Battery Historyn, sprawdzając wszystkie wpisy JobScheduler. Gdy najedziesz kursorem na konkretny wpis, Battery Historyn pokaże właściciela wykonującego zadanie. Weź pod uwagę następujące kwestie:

  • W przypadku Twojej aplikacji czas wykonywania powinien być sensowny.
  • Zastanów się, czy zadania są wykonywane podczas działania aplikacji czy też są związane z okresową pracą w tle.

Czujniki

Urządzenia z Wear OS mają wiele różnych czujników, np. GPS. W większości przypadków korzystaj z usług zdrowotnych na Wear OS zamiast wchodzić w bezpośrednią interakcję z usługą SensorManager. W wielu przypadkach usługi Health Services inteligentnie grupują dane, aby zwiększyć wydajność baterii.

Aby przeanalizować wykorzystanie czujnika w aplikacji, uruchom w oknie terminala to polecenie:

adb shell dumpsys sensorservice

Wyniki tego polecenia zawierają następujące informacje:

  • Bieżące i wcześniejsze rejestracje czujników.
  • Konfiguracja czujnika, w tym grupowanie, jeśli jest ustawione.
  • Ostatnio próbkowane dane.

Przetestuj wyrejestrowanie z czujników

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

  1. Przesuń palcem, aby zamknąć aplikację.
  2. Dotknij ekranu dłonią. Spowoduje to wyłączenie ekranu lub ustawienie ekranu w trybie nieaktywnym.

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

Warstwa danych

Podczas korzystania z interfejsu Data Layer API każda transmisja zużywa pewną ilość energii. Jeśli używasz tego interfejsu API do wysyłania danych, aplikacja musi zostać wybudzona, aby je odebrać. Dlatego zachowaj ostrożność podczas korzystania z tego interfejsu API.

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

  • Zanim skonfigurujesz detektor za pomocą narzędzia WearableListenerService, poczekaj, aż aplikacja stanie się aktywna.
  • Przesyłaj zmiany stanu zamiast konfigurować szybkie aktualizacje. Dzięki tym zmianom urządzenie z Wear OS może obliczać dane lokalne, np. po rozpoczęciu sesji treningowej.

    Przesyłaj wyłącznie zmiany stanu, które aktualizują interfejs użytkownika. Jeśli na przykład na ekranie aktywności widać tylko liczbę przebytych kilometrów z jednym miejscem po przecinku, nie wysyłaj do Wear OS informacji o zmianie stanu za każdym razem, gdy użytkownik przesuwa się o jeden metr do przodu.

Aby przeanalizować wykorzystanie interfejsu API warstwy danych w aplikacji, uruchom to polecenie w oknie terminala na komputerze, na którym programujesz:

adb shell dumpsys activity service WearableService

Wyniki tego polecenia zawierają następujące informacje:

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

Zdrowie i fitness

Jeśli utrzymujesz aplikację związaną ze zdrowiem i aktywnością fizyczną, użyj Usług zdrowotnych, by zoptymalizować wykorzystanie czujników.

  • W przypadku ExerciseClient użyj narzędzia Battery Historyn, aby sprawdzić, czy urządzenie działa prawidłowo w trybie nieaktywnym. Sprawdź, czy aplikacja nie wybudza się częściej niż co minutę lub dwie, aby otrzymać dane ExerciseUpdate.
  • W przypadku ogólnego monitorowania stanu zdrowia przez cały dzień korzystaj z PassiveMonitoringClient zgodnie z opisem w przewodniku monitorowania danych o zdrowiu i aktywności fizycznej w tle.

Kafelki i widżety

Jeśli aplikacja obsługuje kafelek lub widżet, postępuj zgodnie z tymi sprawdzonymi metodami:

  • Wyłącz automatyczne odświeżanie lub zwiększ częstotliwość odświeżania do co najmniej 2 godzin.
  • Do wysyłania aktualizacji danych używaj Komunikacji w chmurze Firebase (FCM) lub odpowiednich zaplanowanych zadań. Zadbaj o to, aby aktualizacje nie były aktualizowane zbyt szybko, bo system może zaplanować powtarzaną pracę z szybszym tempem niż użytkownik czy platforma ma dostęp do danych potrzebnych do jej wykonania.
  • Nie planuj pracy z kafelkiem ani widżetem, gdy użytkownik nie wchodzi z nim w interakcje.
  • Stosuj podejścia przede wszystkim offline.
  • Korzystaj z jednej bazy danych w głównej aplikacji, kafelkach i widżetach. Dzięki temu dane również pozostają spójne na różnych platformach interfejsu.