Oszczędzaj energię i baterię

Energooszczędność jest szczególnie ważna na Wear OS. Zasady projektowania dotyczące 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 Compose 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 różni się w zależności 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 ładować się.
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 otoczenia.
Dostęp do czujnika GPS Wysoki Jeśli to możliwe, zaczekaj, aż użytkownik poprosi o dostęp do GPS.
Utrzymanie wysokiego wykorzystania 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 wyświetlacz w ustawieniach systemu i obserwuj, czy ekran wyłączy się w okresie automatycznego wygaszania.
  • 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ę co najmniej tak długą jak sama animacja.
  • Czas czuwania w trybie ambient: w razie potrzeby (np. w przypadku zastosowań związanych z aktywizmem fizycznym) obsługa trybu zawsze włączonego. Jeśli Twoja aplikacja wymaga ciągłego działania, postępuj zgodnie z tymi zaleceniami dotyczącymi trybu nieaktywnego.

Minimalizowanie wykorzystania procesora

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

  • Użyj krótkich fragmentów.
  • Wykonuj powiązane operacje w grupach, aby zmaksymalizować czas, w którym proces aplikacji jest nieaktywny.

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 dotyczących zdrowia i fitnessu 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 procesora podczas wykonywania zadania w tle).

Historia baterii pozwala zobaczyć poszczególne wystąpienia długich blokad aktywacji, a także podsumowanie łą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ą zablokowane z powodu pewnych zależności, takich jak 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 wyłącza się, 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 śladu, 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 działania w tle muszą być okresowe, nie uruchamiaj ich zbyt często ani na zbyt długi czas, ponieważ może to wyczerpywać 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 poprawić 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łączy go w tryb nieaktywny.

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. 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 historia baterii, aby sprawdzić, czy aplikacja działa prawidłowo w trybie Ambient. Sprawdź, czy 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 poradniku monitorowania danych o zdrowiu i aktywności fizycznej w tle.

Kafelki i widżety

Jeśli Twoja aplikacja obsługuje płytkę lub komplikację, stosuj się do tych sprawdzonych metod:

  • 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 tempa aktualizacji, które może spowodować planowanie przez system powtarzających się zadań z szybkością większą niż ta, z jaką 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 offline.
  • Udostępniaj jedną bazę danych w aplikacji głównej, kafelkach i komplikacjach. Pomaga to też zachować spójność danych w interfejsach.