Wyrażenia dynamiczne w Wear OS

Wear OS obsługuje dynamiczne aktualizacje informacji wyświetlanych na kafelkachwidżetach.

Za pomocą wyrażeń dynamicznych możesz powiązać dane wyświetlane na powierzchni aplikacji, np. na kafelku lub w komplikacji, z określonym źródłem danych. Przykładem takiego źródła danych są dane o tętnie, które platforma może odczytać. Po utworzeniu tego powiązania system automatycznie aktualizuje dane w kafelkach i komplikacjach.

Tworzenie dynamicznych wiązań danych

Aby utworzyć powiązanie z danymi dynamicznymi, zdefiniuj zmienną, która używa dynamicznego typu danych. Powiąż tę zmienną ze strumieniem danych, którego chcesz użyć.

Możesz na przykład pobrać wartości związane z zegarem systemowym i informacjami o zdrowiu, jak pokazano w tym fragmencie kodu.

val systemTime = DynamicInstant.platformTimeWithSecondsPrecision()
val steps: DynamicInt32 = PlatformHealthSources.dailySteps()

Możesz też tworzyć wartości dynamiczne z wyrażeń stałych i wykonywać na nich operacje arytmetyczne, jak pokazano w tym fragmencie kodu:

val dynamicAdditionResult = DynamicInt32.constant(1).plus(2)

Lista możliwych typów danych dynamicznych

Wear OS obsługuje te typy danych dynamicznych:

Możesz też przekształcić typ danych za pomocą wbudowanych funkcji, takich jak:

  • DynamicInt32 obsługuje konwersję na DynamicString za pomocą format().
  • DynamicDuration umożliwia wyodrębnianie określonych części, np. sekund z czasu trwania, jako obiektów DynamicInt32.

Używaj ograniczonej liczby dynamicznych wyrażeń na każdym ekranie.

System ma limit dynamicznych wyrażeń, które może przetwarzać jednocześnie na danym ekranie. System przekształca wszystkie dodatkowe wyrażenia dynamiczne w wartości statyczne.

Wear OS uznaje stałe wyrażenia za wyrażenia dynamiczne. Na przykład ten fragment kodu zawiera 4 wyrażenia dynamiczne:

  1. Operacja plus().
  2. Operacja animate().
  3. Wyrażenie constant(1).
  4. Wyrażenie constant(2), które jest implikowane przez wartość 2 w wyrażeniu dynamicznym plus().

val animatedAdditionResult = DynamicInt32.constant(1).plus(2).animate()