Optymalizowanie wykorzystania pamięci przez tarczę zegarka

Wear OS wydłuża czas pracy baterii, śledząc wykorzystanie pamięci. Tarcze zegarka korzystające z Formatu tarczy zegarka mają limity pamięci określone we wskazówkach dotyczących 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ć zużycie pamięci przez obraz lub czcionkę bitmapową na tarczy zegarka w formacie tarczy zegarka, system wykonuje te czynności:

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

Na podstawie powstałej ramki ograniczającej rozmiar jest obliczany w ten sposób:

  • W przypadku obrazów i czcionek korzystających z formatu RGBA8888: 4 x szerokość x wysokość
  • W przypadku obrazów i czcionek korzystających z RGB565: 2 x szerokość x wysokość
  • W przypadku obrazów i czcionek korzystających z konfiguracji mapy bitowej ALPHA_8: szerokość × wysokość

Tryb interaktywny

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

  1. nieprzetworzony rozmiar czcionek wektorowych,
  2. Szacunkowe wykorzystanie domyślnej czcionki systemu
  3. Łączny rozmiar obrazów i czcionek bitmapowych po przycięciu, zmianie rozmiaru i przekształceniu.

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 przeszacować liczbę zasobów używanych jednocześnie.

Tryb nieaktywny i warstwy

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

  1. tło tarczy zegarka, System traktuje to jako jeden obraz, niezależnie od tego, z ilu obrazów składa się tło.
  2. ruchome części, takie jak wskazówki, wyświetlacze cyfrowe czy elementy dynamiczne;
  3. Pozostałe elementy z źródłowego pliku XML.

Duże czcionki bitmapowe często zużywają najwięcej pamięci w trybie otoczenia.

Metody zmniejszania zużycia pamięci

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

Przycinanie i zmienianie rozmiaru czcionek bitmapowych

Przytnij obrazy i BitmapFont obiekty, aby dopasować je do rozmiaru wyświetlacza.

Wear OS renderuje tarcze zegarka ze wszystkimi zdekompresowanymi obrazami. Prawie pusty obraz na pełnym ekranie może zajmować 3 KB na dysku, ale 750 KB lub więcej na ekranie o rozdzielczości 450 x 450 pikseli.

Używanie spójnych wysokości czcionek bitmapowych

Jeśli używasz BitmapFont, upewnij się, że wszystkie obrazy znaku mają tę samą wysokość. Podobnie wszystkie obrazy słów powinny mieć tę samą wysokość.

Używanie spójnych rozmiarów klatek w animacjach

Zamiast przesuwać obraz po tarczy zegarka, zaktualizuj elementy obrazu i zachowaj stałą pozycję ramki ograniczającej. Na przykład, aby animować okrąg na tarczy zegarka, zmień jego kolor zamiast go przesuwać.

Ta technika zmniejsza rozmiar obliczonej ramki ograniczającej animacji.

Usuwanie duplikatów obrazów

Aby wyświetlić obraz wiele razy, uwzględnij tylko 1 zasób obrazu i odwołuj się do niego wielokrotnie.

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

Aby zasymulować pasek postępu, który kończy się 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="25" y="25">
    <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="#654456" thickness="10" />
    </Arc>
</PartDraw>

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

Umieść wskazówki zegarka 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 na końcu umożliwia systemowi wyeliminowanie całej warstwy z obliczeń pamięci trybu otoczenia.

Sprawdzanie wykorzystania pamięci przez tarczę zegarka

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

  • Uwaga: tekst linku jest wyświetlany, gdy język JavaScript jest wyłączony.
  • Łuk
  • Linia
  • Prostokąt