Optymalizuj tarcze zegarka

Tarcza zegarka z Wear OS działa w sposób ciągły, więc musi oszczędzać energię.

Postaraj się maksymalnie zoptymalizować skuteczność tarczy zegarka. Na tej stronie znajdziesz sprawdzone metody ogólnej optymalizacji tarczy zegarka oraz sprawdzone metody dotyczące animacji i obrazów.

Podstawowa optymalizacja

W tej sekcji znajdziesz sprawdzone metody zwiększania ogólnej skuteczności tarczy zegarka.

Kolor i jasność tarczy zegarka

Użycie ciemnych kolorów tarczy zegarka zmniejsza zużycie energii z zegarka. Poniżej znajdziesz zalecenia dotyczące ustawienia tła tarczy zegarka w celu optymalnego wykorzystania baterii:

  • Kolor: jeśli to możliwe, użyj czarnego tła.
  • Jasność: jeśli korzystanie z czarnego tła jest niemożliwe, ustaw jego jasność na poziomie co najmniej 25% w przypadku barwy, nasycenia, wartości (HSV) lub barwy, nasycenia i jasności (HSB). Jeśli na przykład używasz klasy Color do ustawiania koloru tła zdefiniowanego za pomocą skali HSV, dla ustawienia wartości, które steruje jasnością, użyj wartości 25 lub niższej.

Używanie dynamicznych funkcji do interakcji z telefonem

Jeśli tarcza zegarka wymaga działania na telefonie, uruchamiaj kod tylko wtedy, gdy tarcza jest aktywna. Aby aplikacja na telefonie mogła dowiedzieć się, że tarcza jest aktywna, zaleca się użycie interfejsu CapabilityClient API.

Monitorowanie zużycia energii

Aplikacja towarzysząca na Wear OS pozwala deweloperom i użytkownikom sprawdzać, ile baterii zużywają różne procesy na urządzeniu do noszenia. Aby to sprawdzić, wybierz kolejno Ustawienia > Bateria zegarka.

Rejestrowanie tarcz zegarka z szyfrowaniem

Android 7.0 i nowsze wersje obsługują szyfrowanie przy użyciu plików i pozwalają aplikacjom szyfrować na działanie, zanim użytkownik poda kod dostępu do odszyfrowywania podczas uruchamiania. Może to skrócić czas przejścia z animacji uruchamiania na tarczę zegarka o maksymalnie 30 sekund.

Aby umożliwić szybsze uruchamianie, dodaj android:directBootAware="true" do pliku manifestu tarczy zegarka.

Uwaga: korzystaj z tej funkcji w przypadku tarcz zegarka, które nie korzystają z pamięci szyfrowanej za pomocą danych logowania.

Sprawdzone metody dotyczące animacji

Sprawdzone metody opisane w tej sekcji pomagają ograniczyć zużycie energii związane z animacjami.

Zmniejszanie liczby klatek w animacjach

Animacje są często kosztowne pod względem obliczeniowym i zużywają znaczne ilości energii. Większość animacji wygląda płynnie w przypadku 30 klatek na sekundę, więc unikaj uruchamiania animacji z większą liczbą klatek. Zamiast tego możesz używać dynamicznej liczby klatek. Więcej informacji znajdziesz w opisie przykładowej tarczy zegarka Canvas.

Nie wyłączaj procesora między animacjami

Aby wydłużyć czas pracy baterii, nie używaj animacji. Nawet migające dwukropki zużywają energię w każdym mrugnięciu.

Procesory wybudzają animacje i niewielkie zmiany zawartości tarczy zegarka. Niech procesor przełącza się między animacjami, np. używając krótkich serii animacji co sekundę w trybie interaktywnym, a potem pozostawiaj go w trybie uśpienia do następnej sekundy. Częste, nawet krótkie usypianie procesora może znacznie zmniejszyć zużycie energii.

Sprawdzone metody dotyczące obrazów

Sprawdzone metody opisane w tej sekcji pomagają ograniczyć zużycie energii związane z obrazami.

Zmniejsz rozmiar zasobów bitmap

Wiele tarcz zegarka składa się z obrazu tła oraz innych zasobów graficznych, które są przekształcane i nałożone na obraz tła, np. wskazówki zegara i inne elementy, które poruszają się wraz z upływem czasu. Im większe są zasoby graficzne, tym bardziej kosztowne jest ich przekształcenie. Te elementy graficzne są zwykle obracane, a czasem skalowane w metodzie Render.CanvasRenderer.render() za każdym razem, gdy system ponownie rysuje tarczę zegarka, tak jak to opisano w sekcji Rysowanie tarczy zegarka.

Rysunek 1. Przytnij wskazówki zegara, aby usunąć dodatkowe piksele.

Zmniejszenie rozmiaru zasobów bitmap poprawia wydajność animacji i pozwala zaoszczędzić energię. Aby poprawić skuteczność tarczy zegarka, postępuj zgodnie z tymi wskazówkami:

  • Nie używaj elementów graficznych, które są większe niż potrzebujesz.
  • Usuń dodatkowe przezroczyste piksele na krawędziach.

Na przykład rozmiar obrazu tarczy zegara po lewej stronie na ilustracji 1 można zmniejszyć o 97%, usuwając dodatkowe przezroczyste piksele, tak jak widać po prawej stronie figury.

Łączenie zasobów bitmapy

Jeśli masz mapy bitowe, które często są rysowane razem, rozważ połączenie ich w jeden zasób graficzny. Możesz na przykład połączyć obraz tła w trybie interaktywnym ze znacznikami, aby uniknąć rysowania dwóch pełnoekranowych map bitowych za każdym razem, gdy system ponownie rysuje tarczę zegarka.

Wyłącz anti-aliasing podczas rysowania skalowanych map bitowych

Gdy rysujesz skalowaną bitmapę na obiekcie Canvas za pomocą metody Canvas.drawBitmap(), możesz udostępnić instancję Paint do skonfigurowania kilku opcji. Aby poprawić wydajność, wyłącz antyaliasing za pomocą metody setAntiAlias(), ponieważ ta opcja nie ma żadnego wpływu na mapy bitowe.

Rysunek 2. Przykład wyłączonego filtrowania map bitowych (po lewej) i włączenia (po prawej).

Użyj filtrowania bitmap

W przypadku zasobów bitmapowych, które rysujesz na innych elementach, włącz filtrowanie bitmap w tej samej instancji Paint za pomocą metody setFilterBitmap(). Rysunek 2 przedstawia powiększony widok wskazówki zegara z filtrowaniem bitmapowym i bez niego.

Uwaga: gdy tryb nieaktywny jest aktywny, wyłącz filtrowanie map bitowych. W niskim trybie nieaktywnym system niezawodnie renderuje kolory obrazu, aby przeprowadzić filtrowanie bitmapowe.

Przenieś kosztowne operacje poza metodę rysowania

System wywołuje metodę Render.CanvasRenderer.render() za każdym razem, gdy ponownie rysuje tarczę zegarka. Aby poprawić wydajność, uwzględnij w tej metod tylko działania, które są surowo wymagane do aktualizacji tarczy zegarka.

W miarę możliwości unikaj wykonywania tych operacji w metodzie Render.CanvasRenderer.render():

  • Wczytuję obrazy i inne zasoby
  • Zmiana rozmiaru obrazów
  • Przydzielam obiekty
  • Obliczenia, których wyniki nie zmieniają się między klatkami

Aby przeanalizować wydajność tarczy zegarka, użyj programu profilującego CPU. Zadbaj w szczególności o to, aby czas wykonywania implementacji Render.CanvasRenderer.render() był krótki i spójny w przypadku poszczególnych wywołań. Więcej informacji znajdziesz w artykule o sprawdzaniu aktywności procesora za pomocą narzędzia do profilowania procesora.

Przykładowa aplikacja z tarczą zegarka pokazuje sprawdzone metody konfigurowania tarczy zegarka.