Oszczędzaj energię i baterię

Oszczędzanie energii jest szczególnie ważne w przypadku Wear OS. Zasady dotyczące wyglądu Wear OS koncentrują się w dużym stopniu na zużyciu energii przez urządzenie, ponieważ zegarek ma mały format i jest przeznaczony do krótkich interakcji.

W porównaniu z większymi urządzeniami mobilnymi urządzenia z Wear OS mają mniejsze baterie, więc jest bardziej widoczne. Poza tym ładowanie urządzenia 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ą najpierw odłączyć urządzenie z Wear OS od swojego ciała.

Aby zwiększyć energooszczędność aplikacji, postępuj zgodnie z tymi sprawdzonymi metodami projektowania:

  • Projekt aplikacji powinien uwzględniać format Wear OS. Nie może bezpośrednio kopiować Twojej aplikacji mobilnej.
  • Możesz wykorzystać istniejącą aplikację mobilną do wybranych celów. Na przykład korzystanie z internetu i synchronizacja danych na zegarku są drogie. Zastanów się, czy urządzenie mobilne może wykonywać całą pracę, a urządzenie z Wear OS otrzymuje zmiany w danych.
  • Zaprojektuj przypadki użycia pod kątem krótszych interakcji.
  • Zastanów się, których zdarzeń z Wear OS używasz i jak często występują.
  • W miarę możliwości odkładaj pracę aplikacji do czasu, gdy zegarek się ładuje. Szczególnie dotyczy to zadań intensywnie korzystających z danych, takich jak synchronizacja danych i porządkowanie baz danych.

    Jeśli urządzenie się ładuje i ma połączenie z Wi-Fi, zaplanuj zadania pobierania z wyprzedzeniem danych, obrazów i aktualizacji, które użytkownik chce zobaczyć w aplikacji.

Z tego przewodnika dowiesz się, kiedy i w jaki sposób system uruchamia Twoją aplikację oraz jak możesz ograniczyć czas działania aplikacji i wyczerpywanie się baterii. Więcej informacji o sposobie wykonywania poszczególnych działań (takich jak wczytywanie aplikacji lub przewijanie listy) znajdziesz we wskazówkach dotyczących wydajności, np. w przewodniku po wydajności tworzenia wiadomości na Wear OS.

Monitorowanie wykorzystania baterii w czasie

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

adb shell dumpsys batterystats

Biblioteka w GitHubie zawiera paralizator statystyk baterii, który może być przydatne do uruchomienia razem z tym poleceniem.

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

Zanim zastanowisz się nad swoją aplikacją, zastanów się nad zdarzeniami zużywającymi energię na urządzeniu z Wear OS.

W tabeli poniżej przedstawiono względny wpływ kilku typowych zdarzeń w aplikacjach na Wear OS na czas pracy na baterii. Dokładne zużycie energii różni się w zależności od urządzenia.

Wydarzenie Wpływ na żywotność baterii Jak ograniczyć
Dostęp do sieci, w tym LTE i Wi-Fi Bardzo wysoka Odrocz dostęp do sieci, które nie są konieczne, do czasu ładowania urządzenia.
Włącz ekran i uruchom tryb interaktywny Wysoki Nie zachęcaj użytkownika do utrzymania ekranu na ekranie dłużej, niż jest to konieczne. Zadbaj o to, aby środowisko działały w zawsze włączonym trybie (nazywanym też trybem nieaktywnym).
Dostęp do czujnika GPS Wysoki Jeśli to możliwe, poczekaj, aż użytkownik poprosi o dostęp do GPS.
Utrzymuj wysokie wykorzystanie procesora Wysoki Przepływy wykorzystania treści za pomocą Jetpack Compose
Dostęp do czujnika tętna Medium Używaj czasu wybudzenia procesora w przypadku odbierania wywołań zwrotnych z interfejsu API czujników, na przykład podczas korzystania z usług zdrowotnych na Wear OS.
Dostęp do innego urządzenia przez Bluetooth Medium Zadbaj o to, aby sesje były krótkie.
Utrzymywanie blokady wybudzenia Medium Ogranicz ręczne tworzenie blokad uśpienia i użyj funkcji WorkManager.

Minimalizuj czas włączania ekranu

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

  • Blokady ekranu: jeśli to możliwe, tego unikać. Aby przetestować konfigurację, w ustawieniach systemu wyłącz opcję Zawsze aktywny wyświetlacz i sprawdź, czy ekran wyłącza się po upływie określonego czasu oczekiwania.
  • Animacje: zminimalizuj skomplikowane animacje i skup się na krótkich przejściach, aby uzyskać bardziej profesjonalny wygląd. Szczególnie unikaj stosowania długich animacji i pętli. Jeśli wymagana jest pętla, dodaj między kolejnymi pętlami przerwę nie mniejszą niż długość samej animacji.
  • Czas wybudzenia w trybie nieaktywnym: obsługa zawsze włączonej, w razie potrzeby, np. w przypadku fitnessu. Jeśli Twoja aplikacja wymaga stałego włączenia, sprawdź, czy w trybie nieaktywnym aplikacja ma następujące funkcje:

    • Zmniejsza odsetek podświetlanego ekranu urządzenia.
    • Nie wyświetla animacji.
    • Nie aktualizuje zawartości ekranu, z wyjątkiem wywołania zwrotnego onAmbientUpdate().

Minimalizuj wykorzystanie procesora

W aplikacji na Wear OS przestrzegaj tych zasad wykorzystania procesora:

  • Używaj krótko.
  • Grupuj wszystkie powiązane operacje, aby zmaksymalizować czas bezczynności procesu aplikacji.

Minimalizuj blokady wybudzenia

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

W niektórych przypadkach blokada wybudzenia jest akceptowalna, na przykład gdy aplikacja wykona jedną z tych czynności:

  • Odtwarza multimedia w tle.
  • Używa WorkManager lub JobScheduler. (System włącza w Twoim imieniu blokadę uśpienia podczas wykonywania zadania w tle).

Funkcja Historia baterii może wyświetlać poszczególne przypadki długich blokad wybudzenia, a także podsumowania ich łącznej liczby i czasu trwania. Sprawdź liczbę i czas trwania blokad uśpienia utrzymywanych przez aplikację, a następnie porównaj te informacje z interaktywnymi wzorcami użytkowania aplikacji:

  • Sprawdź, czy nie występują nieoczekiwane blokady wybudzenia.
  • Jeśli czas trwania jest dłuższy, niż powinien, zastanów się, czy zadanie nie jest zablokowane z powodu jakiejś zależności, np. od dostępności sieci.

Sprawdzanie, dlaczego aplikacja staje się nieaktywna

Zastanów się, co robi aktywna aplikacja w momencie wystąpienia kluczowych zdarzeń związanych z urządzeniem, takich jak:

  • Ekran wyłącza się, a urządzenie przechodzi w tryb nieaktywny.
  • Aplikacja zostaje zamykana przesunięciem palcem.

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

Program profilujący energię

Narzędzie Energy Profiler jest dostępne w menu Android Studio po wybraniu Widok > Okna narzędzi > Program profilujący:

  1. Sprawdź ślad systemu, gdy ekran wyłącza się, a urządzenie przechodzi w tryb nieaktywny.
  2. Poszukaj dalszych czynności i poziomu wykorzystania procesora przez urządzenie.

Perfetto

Perfetto umożliwia zarejestrowanie logu czasu, a następnie sprawdzenie, czy istnieją jakieś wątki w aplikacji, gdy ekran się wyłącza, urządzenie przechodzi w tryb nieaktywny lub użytkownik zamknie aktywność aplikacji.

Zdefiniuj zdarzenia niestandardowe, aby oznaczać ważne zdarzenia w aplikacji, w tym zdarzenia związane z daną domeną. W przypadku aplikacji do multimediów może to być np. pobieranie playlist, określonego elementu multimedialnego, rozpoczynanie odtwarzania i zatrzymywanie odtwarzania. Po zdefiniowaniu tych zdarzeń możesz je zobaczyć w Perfetto i porównać ich czas z wykorzystaniem procesora i mocy obliczeniowej przez aplikację.

Analizowanie zaplanowanych zadań w aplikacji

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

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

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

Spójrz też na wykres historii baterii, sprawdzając każdy wpis JobScheduler. Po najechaniu kursorem na konkretny wpis w usłudze Bateria historyk pojawi się właściciel wykonania zadania. Weź pod uwagę następujące kwestie:

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

Czujniki

Urządzenia z Wear OS mają wiele różnych czujników, np. GPS. W większości przypadków należy korzystać z usług medycznych na Wear OS zamiast bezpośredniej interakcji z usługą SensorManager. W wielu przypadkach usługi Health Services inteligentnie grupują dane, aby poprawić wydajność baterii.

Aby przeanalizować wykorzystanie czujników w aplikacji, uruchom to polecenie w oknie terminala na komputerze, którego używasz:

adb shell dumpsys sensorservice

Wyniki tego polecenia zawierają te informacje:

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

Testowanie wyrejestrowania z czujników

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

  1. Zamknij aplikację przesunięciem palca.
  2. Dotknij ekranu dłonią. Spowoduje to wyłączenie ekranu lub włączenie na nim trybu nieaktywnego.

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

Warstwa danych

Podczas korzystania z interfejsu Data Layer API każda transmisja zużywa pewną energię. Jeśli używasz tego interfejsu API do wysyłania danych, aplikacja musi się wybudzić, aby je odebrać. Dlatego podczas korzystania z tego interfejsu API należy zachować ostrożność.

Oto niektóre dodatkowe sprawdzone metody korzystania z interfejsu Data Layer API:

  • Zanim skonfigurujesz odbiornik, używając WearableListenerService, poczekaj, aż aplikacja będzie aktywna.
  • Zamiast konfigurować szybkie aktualizacje, będziesz przesyłać zmiany stanu. Dzięki tym zmianom stan urządzenia z Wear OS może wykonywać obliczenia danych lokalnych, np. godzinę rozpoczęcia sesji treningowej.

    Przesyłaj tylko te zmiany stanu, które aktualizują interfejs użytkownika. Jeśli na przykład ekran aktywności pokazuje tylko liczbę przebytych kilometrów z dokładnością do jednego miejsca po przecinku, nie wysyłaj zmiany stanu do Wear OS za każdym razem, gdy użytkownik przesuwa miernik do przodu.

Aby przeanalizować wykorzystanie interfejsu Data Layer API w swojej aplikacji, uruchom następujące polecenie w oknie terminala na komputerze, który służy do programowania:

adb shell dumpsys activity service WearableService

Wyniki tego polecenia są takie:

  • 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ą metody DataClient.

Zdrowie i fitness

Jeśli masz aplikację związaną ze zdrowiem i aktywnością fizyczną, możesz skorzystać z usług związanych ze zdrowiem, aby zoptymalizować sposób korzystania z czujników w aplikacji.

  • W przypadku urządzenia ExerciseClient sprawdź, czy urządzenie działa w trybie nieaktywnym, używając funkcji Historia baterii. Aby otrzymywać dane ExerciseUpdate, sprawdź, czy aplikacja nie wybudza się częściej niż co minutę lub dwie.
  • Do całodziennego monitorowania ogólnego stanu zdrowia użyj PassiveMonitoringClient zgodnie z opisem w przewodniku monitorowania danych o zdrowiu i aktywności fizycznej w tle.

Kafelki i widżety

Jeśli Twoja 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 odpowiednio zaplanowanych zadań. Unikaj szybkiego aktualizowania, ponieważ może to spowodować, że system będzie planować powtarzaną pracę szybciej, niż użytkownik lub platforma będą miały dostęp do danych potrzebnych do ich wykonania.
  • Nie planuj pracy z kafelkiem ani widżetem, gdy użytkownik nie korzysta z niego.
  • Wykorzystuj podejście skoncentrowane na sprzedaży offline.
  • Udostępniaj jedną bazę danych między główną aplikacją, kafelkami i widżetami. Pomaga to też zachować spójność danych na różnych platformach interfejsu.