Optymalizowanie wykorzystania pamięci przez tarczę zegarka

System Wear OS wydłuża czas pracy na baterii dzięki śledzeniu wykorzystania pamięci. Tarcze zegarka korzystające z Formatu tarczy zegarka mają limity pamięci zgodnie ze wskazówkami dotyczącymi jakości aplikacji na Wear OS:

  • Oświetlenie kinowe: maksymalne użycie pamięci to 10 MB.
  • Tryb interaktywny: maksymalne użycie pamięci to 100 MB.

Obliczanie wykorzystania pamięci

Aby obliczyć wykorzystanie pamięci na potrzeby obrazu lub czcionki bitmapowej na tarczy zegarka za pomocą formatu tarczy zegarka, system wykonuje te czynności:

  1. Dekompresuj obraz lub czcionkę.
  2. Sprawdź, czy mają zastosowanie te optymalizacje:
    • zmianę rozmiaru, aby lepiej dopasować obraz do ekranu;
    • Przycinanie przezroczystych pikseli
    • próbkowanie w dół do formatu RGB565 bez utraty wierności

Na podstawie otrzymanej ramki ograniczającej rozmiar jest obliczany w ten sposób:

  • W przypadku obrazów i czcionek używających formatu RGBA8888: 4 x szerokość x wysokość.
  • W przypadku obrazów i czcionek używających RGB565: 2 x szerokość x wysokość
  • W przypadku obrazów i czcionek używających konfiguracji bitmapy ALPHA_8: szerokość x wysokość.

Tryb interaktywny

Aby obliczyć wykorzystanie pamięci w trybie interaktywnym, system zlicza te wartości:

  1. Nieprzetworzony rozmiar czcionek wektorowych
  2. Szacunkowe wykorzystanie domyślnej czcionki systemu
  3. Łączny rozmiar obrazów i czcionek bitmapowych po zastosowaniu przycięcia, zmiany rozmiaru i formatu.

Konfiguracje

W przypadku tarcz zegarka z konfiguracjami system próbuje obliczyć łączny rozmiar zasobów tarczy zegarka w różnych konfiguracjach. Jeśli liczba kombinacji jest bardzo duża, system może zawyżyć liczbę zasobów używanych jednocześnie.

Tryb nieaktywny i warstwy

System zakłada, że tryb ambient wykorzystuje maksymalnie 3 warstwy pełnoekranowe, z których 2 są statyczne. Warstwy obejmują:

  1. Tłoko tarczy zegarka. System traktuje to jako jeden obraz, niezależnie od tego, ile obrazów zawiera tło.
  2. elementy ruchome, takie jak ręce, wyświetlacze cyfrowe czy elementy dynamiczne;
  3. Pozostałe elementy z pliku źródłowego XML.

Duże czcionki bitmapowe często wykorzystują najwięcej pamięci w trybie dynamicznym.

Sposoby zmniejszania wykorzystania pamięci

Aby zmniejszyć wykorzystanie pamięci, zastosuj te optymalizacje.

Przycinanie i zmienianie rozmiaru czcionek bitmapowych

Przytnij obrazy i obiekty BitmapFont, aby pasowały do rozmiaru wyświetlacza.

Wear OS wyświetla tarcze zegarka z rozpakowanymi obrazami. Obraz pełnoekranowy, który jest w większości pusty, może zajmować na dysku 3 KB, ale na ekranie o wymiarach 450 x 450 pikseli może zajmować 750 KB lub więcej.

Używaj spójnych wysokości czcionek bitmapowych

Jeśli używasz BitmapFont, sprawdź, czy wszystkie obrazy postaci mają tę samą wysokość. Podobnie upewnij się, że wszystkie obrazy słów mają tę samą wysokość.

Używaj stałych rozmiarów klatek w animacjach.

Zamiast przesuwać obraz na tarczy zegarka, zaktualizuj elementy na obrazie i nie zmieniaj pozycji prostokąta ograniczającego. Aby na przykład animować okrąg na tarczy zegarka, zamiast obracać go, zmień jego kolor.

Ta technika zmniejsza rozmiar obliczonej ramki ograniczającej animacji.

usuwanie duplikatów obrazów,

Aby wyświetlić obraz wielokrotnie, dodaj tylko jeden zasób obrazu i odwołuj się do niego kilka razy.

Wyświetlanie postępu za pomocą łuków

Aby symulować zakończenie paska postępu po 1 minucie lub 1 godzinie, nie używaj 60 obrazów. Użyj obiektu Arc z wyrażeniem kontrolującym jego długość, jak pokazano tutaj:

<PartDraw angle="0" width="400" height="400" name="ProgressBar"
          pivotX="0.5" pivotY="0.5 x="40" y="40">
    <Arc centerX="200" centerY="200" width="400" height="400"
         startAngle="0" endAngle="360">
        <!-- Completes a "progress loop" every minute. -->
        <Transform target="endAngle"
                   value="0 + (clamp([SECOND], 0, 60) - 0) * 6" />
        <Stroke cap="ROUND" color="#123456" thickness="10" />
    </Arc>
</PartDraw>

Aby wyświetlić linię nieciągłą, np. w celu uzyskania wyglądu zegara cyfrowego w stylu retro, użyj właściwości kreski dla obiektu Stroke lub półprzezroczystej nakładki obrazu maski.

umieść wskazówki i widżety na końcu pliku źródłowego.

Węzły XML są rysowane w kolejności podanej w źródłowym pliku XML. Umieszczenie wskazówek i komplikacji zegarka na końcu umożliwia systemowi wyeliminowanie całego poziomu z obliczeń pamięci trybu ambient.

Ocena wykorzystania pamięci przez tarczę zegarka

Aby zmierzyć wykorzystanie pamięci przez tarczę zegarka, użyj narzędzia do oceny śladu pamięci, które jest dostępne w repozytorium watchface na GitHubie.

  • Uwaga: tekst linku jest wyświetlany, gdy obsługa JavaScript jest wyłączona
  • Łuk
  • Linia
  • Prostokąt