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
lubJobScheduler
. (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:
- Sprawdź ślad systemu, gdy ekran wyłącza się, a urządzenie przechodzi w tryb nieaktywny.
- 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:
- Zamknij aplikację przesunięciem palca.
- 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ć daneExerciseUpdate
, 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.