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
lubJobScheduler
. 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:
- Sprawdź ślad systemu, gdy ekran wyłącza się i urządzenie przechodzi w tryb nieaktywny.
- 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:
- Przesuń palcem, aby zamknąć aplikację.
- 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ć daneExerciseUpdate
. - 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.
Polecane dla Ciebie
- Uwaga: tekst linku wyświetla się, gdy JavaScript jest wyłączony
- Dostęp do lokalizacji w tle
- Ustawianie alarmów
- Tworzenie widżetu zaawansowanego {:#advanced-Widget}