Utwórz środowisko wykonawcze
Podstawowe elementy składowe modelu programowania i zarządzania stanem w Compose oraz podstawowe środowisko wykonawcze, na które ma być kierowana wtyczka kompilatora Compose.
Najnowsza aktualizacja Wersja stabilna Kandydat do wydania Wersja Beta Wydanie alfa
26 czerwca 2024 r. 1.6.8 - 1.7.0-beta04 -

Struktura

Narzędzie Compose to połączenie 7 identyfikatorów grup Maven w ramach usługi androidx. Każda grupa zawiera docelowy podzbiór funkcji, z których każda ma własny zestaw informacji o wersji.

W tej tabeli opisano grupy i linki do poszczególnych zestawów informacji o wersji.

GrupaOpis
compose.animation,Twórz animacje w aplikacjach Jetpack Compose, aby wzbogacać wrażenia użytkowników.
compose.buildrPrzekształcaj funkcje @Composable i optymalizuj funkcje za pomocą wtyczki kompilatora Kotlin.
compose.foundationTwórz aplikacje w Jetpack Compose, używając gotowych do użycia elementów składowych, i rozbuduj podstawy, aby tworzyć własne elementy systemu.
compose.material,Twórz interfejsy Jetpack Compose z gotowymi do użycia komponentami Material Design. Jest to punkt wejścia wyższego poziomu w Composer, który ma dostarczać komponenty pasujące do tych opisanych na www.material.io.
compose.material3,Twórz interfejsy Jetpack Compose z komponentami Material Design 3, które stanowią kolejną wersję Material Design. Material 3 ma zaktualizowane motywy i komponenty oraz funkcje personalizacji Material You, takie jak dynamiczne kolory, i został zaprojektowany tak, aby był spójny z nowym stylem wizualnym i interfejsem systemu na Androidzie 12.
compose.runtime,Podstawowe elementy składowe modelu programowania i zarządzania stanem w Compose oraz podstawowe środowisko wykonawcze, na które ma być kierowana wtyczka kompilatora Compose.
compose.ui,Podstawowe elementy interfejsu tworzenia wiadomości niezbędne do interakcji z urządzeniem, w tym układ, rysowanie i wprowadzanie tekstu.

Deklarowanie zależności

Aby dodać zależność w Compose, musisz dodać do projektu repozytorium Google Maven. Więcej informacji znajdziesz w repozytorium Google Maven.

W pliku build.gradle aplikacji lub modułu dodaj zależności artefaktów, których potrzebujesz:

Odlotowy

dependencies {
    implementation "androidx.compose.runtime:runtime:1.6.8"
    implementation "androidx.compose.runtime:runtime-livedata:1.6.8"
    implementation "androidx.compose.runtime:runtime-rxjava2:1.6.8"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.14"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

dependencies {
    implementation("androidx.compose.runtime:runtime:1.6.8")
    implementation("androidx.compose.runtime:runtime-livedata:1.6.8")
    implementation("androidx.compose.runtime:runtime-rxjava2:1.6.8")
}

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.14"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Więcej informacji o zależnościach znajdziesz w artykule Dodawanie zależności kompilacji.

Opinia

Twoja opinia pomoże nam ulepszyć Jetpack. Daj nam znać, jeśli odkryjesz nowe wydania lub masz pomysły na ulepszenie tej biblioteki. Zanim utworzysz nową bibliotekę, przejrzyj istniejące problemy w tej bibliotece. Możesz oddać swój głos do istniejącego problemu, klikając przycisk gwiazdki.

Tworzenie nowego numeru

Więcej informacji znajdziesz w dokumentacji narzędzia do śledzenia problemów.

Wersja 1.0 śledzenia środowiska wykonawczego

Wersja 1.0.0-beta01

29 listopada 2023 r.

Usługa androidx.compose.runtime:runtime-tracing:1.0.0-beta01 została zwolniona. Wersja 1.0.0-beta01 zawiera te zatwierdzenia.

Wersja 1.0.0-alpha05

15 listopada 2023 r.

Usługa androidx.compose.runtime:runtime-tracing:1.0.0-alpha05 została zwolniona. Wersja 1.0.0-alfa05 zawiera te zatwierdzenia.

Poprawki błędów

  • Przypięto zależności do najgorszych obsługiwanych wersji stabilnych (np.compose-runtime i tracing-perfetto). Rozwiązano problem, w którym śledzenie procesu tworzenia środowiska wykonawczego skutkowało umieszczeniem w aplikacji nowszej wersji środowiska wykonawczego kompozycji.

Wersja 1.0.0-alpha04

23 sierpnia 2023 r.

Usługa androidx.compose.runtime:runtime-tracing:1.0.0-alpha04 została zwolniona. Wersja 1.0.0-alfa04 zawiera te zatwierdzenia.

Nowe funkcje

  • Zgodność z najnowszymi wersjami testów porównawczych i śledzenia Perfetto, umożliwiając obsługę śledzenia kompozycji podczas uruchamiania aplikacji (uruchamianie „na zimno”), np. w AndroidX Benchmark i Android Studio (od wersji Hedgehog Beta 2).

Zmiany interfejsu API

  • Nazwa androidx.tracing.perfetto.Trace została zmieniona na androidx.tracing.perfetto.PerfettoSdkTrace. (I44af8).
  • Zapewniam spójność interfejsów API śledzenia Perfetto SDK z android.os.Trace. (I73ba0, b/282199917)
  • Wymagania wstępne do śledzenia podczas uruchamiania aplikacji. (IAD890).
  • Scalone eksperymentalne i publiczne pliki interfejsu API (I0f2e1, b/278769092)

Wersja 1.0.0-alpha02

8 lutego 2023 r.

Usługa androidx.compose.runtime:runtime-tracing:1.0.0-alpha02 została zwolniona. Wersja 1.0.0-alfa02 zawiera te zatwierdzenia.

Nowe funkcje

  • Bez zmian funkcjonalnych. Wiele optymalizacji wydajności w kolejnych zależnościach (androidx.tracing:tracing-perfetto*).

Wersja 1.0.0-alpha01

7 września 2022 roku

Usługa androidx.compose.runtime:runtime-tracing:1.0.0-alpha01 została zwolniona. Wersja 1.0.0-alfa01 zawiera te zatwierdzenia.

Nowe funkcje

  • androidx.compose.runtime:runtime-tracing to biblioteka, która (wraz z obsługiwanymi przez nią narzędziami) umożliwia rozszerzone śledzenie w aplikacji Compose. Ta początkowa wersja to wersja 1.0.0-alfa01.

Wersja 1.7

Wersja 1.7.0-beta04

26 czerwca 2024 r.

Usługa androidx.compose.runtime:runtime-*:1.7.0-beta04 została zwolniona. Wersja 1.7.0-beta04 zawiera te zatwierdzenia.

Wersja 1.7.0-beta03

12 czerwca 2024 r.

Usługa androidx.compose.runtime:runtime-*:1.7.0-beta03 została zwolniona. Wersja 1.7.0-beta03 zawiera te zatwierdzenia.

Wersja 1.7.0-beta02

29 maja 2024 r.

Usługa androidx.compose.runtime:runtime-*:1.7.0-beta02 została zwolniona. Wersja 1.7.0-beta02 zawiera te zatwierdzenia.

Wersja 1.7.0-beta01

14 maja 2024 r.

Usługa androidx.compose.runtime:runtime-*:1.7.0-beta01 została zwolniona. Wersja 1.7.0-beta01 zawiera te zatwierdzenia.

Wersja 1.7.0-alpha08

1 maja 2024 r.

Usługa androidx.compose.runtime:runtime-*:1.7.0-alpha08 została zwolniona. Wersja 1.7.0-alfa08 zawiera te zatwierdzenia.

Wersja 1.7.0-alpha07

17 kwietnia 2024 r.

Usługa androidx.compose.runtime:runtime-*:1.7.0-alpha07 została zwolniona. Wersja 1.7.0-alfa07 zawiera te zatwierdzenia.

Nowe funkcje

  • Dodano możliwość dostarczenia lokalnej kompozycji, która jest domyślnie obliczana na podstawie wartości innych lokalnych kompozycji (domyślnie przy użyciu funkcji compositionLocalWithComputedDefault()) lub przez podanie funkcji lambda do użycia w celu obliczenia wartości przy użyciu metody providesComputed zamiast provides.
  • Wartość lokalnej kompozycji można uzyskać za pomocą właściwości currentValue kompozycji dostępnej lokalnie z poziomu funkcji lambda i obliczając wartość. Jest ona używana zamiast wartości current, która jest dostępna tylko w funkcjach @Composable. (Iadbc0).

Zmiany interfejsu API

  • Nowo utworzone obiekty stanu są natychmiast dostępne z innych zrzutów, w tym z zrzutu globalnego, ze swoim stanem początkowym. Żadne kolejne modyfikacje nie będą widoczne, dopóki nie zostanie zastosowany zrzut, w którym utworzono obiekt.
  • Początkowy stan obiektu mutableStateOf() i jego wersje podstawowe to wartość przekazywana jako parametr do funkcji mutableStateOf(). Początkowy stan elementów mutableStateListOf() i mutableStateMapOf() jest pusty.
  • Dodano obiekty Snapshot.isInSnapshot i Snapshot.PreexistingSnapshotId, które są używane do tego, aby obiekt stanu umożliwiał natychmiastowy dostęp z globalnego zrzutu po jego utworzeniu.
  • Obiekty stanu niestandardowego mogą obsługiwać natychmiastowy dostęp zgodnie ze wzorcem zmian wprowadzanych do wbudowanych obiektów zrzutu. (I84a17)

Poprawki błędów

  • Naprawiono scalanie obiektu readObserver w zagnieżdżonych zrzutach. Spowodowało to, że zagnieżdżone stany derywowane nie były nieprawidłowe, gdy były używane w elemencie snapshotFlow. (Idf138).

Wersja 1.7.0-alpha06

3 kwietnia 2024 r.

Usługa androidx.compose.runtime:runtime-*:1.7.0-alpha06 została zwolniona. Wersja 1.7.0-alfa06 zawiera te zatwierdzenia.

Poprawki błędów

  • Napraw dostarczanie pojedynczych wartości obsługujących providesDefault (538f45)
  • Unikanie zakleszczeń w rekompozytorium podczas uzyskiwania dostępu do zegara ramek (07e5c6)

Wersja 1.7.0-alpha05

20 marca 2024 r.

Usługa androidx.compose.runtime:runtime-*:1.7.0-alpha05 została zwolniona. Wersja 1.7.0-alfa05 zawiera te zatwierdzenia.

Poprawki błędów

  • Usuwanie późnych zmian dezaktywowanej kompozycji (5950bc)

Wersja 1.7.0-alpha04

6 marca 2024 roku

Usługa androidx.compose.runtime:runtime-*:1.7.0-alpha04 została zwolniona. Wersja 1.7.0-alfa04 zawiera te zatwierdzenia.

Ulepszenia wydajności

  • Wywołaj funkcję Snapshot.current raz na ocenę stanu derywowanego (ee7daf)
  • Odczytaj currentRecord raz na obserwację w kompozycji (b882b2)
  • Usuń przypadkową alokację iteratora w snapshotFlow (231e56)
  • Włącz funkcję nonSkippingGroupOptimization w bibliotekach tworzenia wiadomości. Zwiększa to wydajność generowanego kodu wszystkich funkcji kompozycyjnych w Androidzie, których nie można ponownie uruchomić. W przyszłości planujemy włączyć tę funkcję jako domyślną. I(Acbc08)

Wersja 1.7.0-alpha03

21 lutego 2024 r.

Usługa androidx.compose.runtime:runtime-*:1.7.0-alpha03 została zwolniona. Wersja 1.7.0-alfa03 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Przedstaw grupy zastępujące, aby ulepszyć wykrywanie zmian (0941b5)

Ulepszenia wydajności

  • Popraw alokację pamięci podczas wykrywania zmian (53e7fd)
  • Naprawianie wycieku pamięci w kompozytorze (0e097d)
  • Użyj ScopeMap, aby podczas ponownego tworzenia wiadomości przekazywać unieważnienia (e19a7e)
  • Optymalizuj mapę unieważnień, aby zachować tylko stany derywowane (f11c44)
  • Zastąp wystąpienia IdentityArraySet wartością ScatterSet (db572e)
  • Optymalizuj removeScope w: ScopeMap (bb0530)

Wersja 1.7.0-alpha02

7 lutego 2024 r.

Usługa androidx.compose.runtime:runtime-*:1.7.0-alpha02 została zwolniona. Wersja 1.7.0-alfa02 zawiera te zatwierdzenia.

Poprawki błędów

  • Unieważnij elementy kompozycyjne lambda w podkompozycjach w tej samej ramce. (98301c)
  • Wywołuj wywołanie zwrotne pod numerem onRelease w tej samej kolejności jak w przypadku numeru onForgotten. (2CD790)
  • Filtruj zmienione stany, których nie zaobserwowano w: snapshotFlow. (796B80).

Ulepszenia wydajności

  • Zmodyfikuj obserwator zrzutu, gdy jest już przezroczysty. (F60f30)
  • Optymalizuj SnapshotIdSet.lowest(). (7ae149).
  • Używaj atrybutu fold() bez przydziału w usłudze SnapshotIdSet. (532b7d)
  • Usuń przydział iteracji (83f96b)

Wersja 1.7.0-alpha01

24 stycznia 2024 r.

Usługa androidx.compose.runtime:runtime-*:1.7.0-alpha01 została zwolniona. Wersja 1.7.0-alfa01 zawiera te zatwierdzenia.

Optymalizacje skuteczności

  • Dodawanie możliwości tworzenia przedziałów po dodaniu grupy podrzędnej (b5960c)
  • Optymalizuj zmiany w rejestrowaniu stanów zrzutów (28c3fe)
  • Włącz tryb silnego pomijania (ed1766)

Poprawki błędów

  • Weź pod uwagę metatag domyślnego parametru we wbudowanej zapamiętywaniu (096665)
  • Ustaw wartość currentCompoundHashKey jako unikalną w większej liczbie przypadków (d4a872)
  • Realizowanie grup po wyjściu z wywołania funkcji wbudowanej (2a90fc)

Wersja 1.6

Wersja 1.6.8

12 czerwca 2024 r.

Usługa androidx.compose.runtime:runtime-*:1.6.8 została zwolniona. Wersja 1.6.8 zawiera te zatwierdzenia.

Wersja 1.6.7

1 maja 2024 r.

Usługa androidx.compose.runtime:runtime-*:1.6.7 została zwolniona. Wersja 1.6.7 zawiera te zatwierdzenia.

Wersja 1.6.6

17 kwietnia 2024 r.

Usługa androidx.compose.runtime:runtime-*:1.6.6 została zwolniona. Brak zmian od ostatniej wersji.

Wersja 1.6.5

3 kwietnia 2024 r.

Usługa androidx.compose.runtime:runtime-*:1.6.5 została zwolniona. Wersja 1.6.5 zawiera te zatwierdzenia.

Wersja 1.6.4

20 marca 2024 r.

Usługa androidx.compose.runtime:runtime-*:1.6.4 została zwolniona. Wersja 1.6.4 zawiera te zatwierdzenia.

Wersja 1.6.3

6 marca 2024 roku

Usługa androidx.compose.runtime:runtime-*:1.6.3 została zwolniona. Wersja 1.6.3 zawiera te zatwierdzenia.

Wersja 1.6.2

21 lutego 2024 r.

Usługa androidx.compose.runtime:runtime-*:1.6.2 została zwolniona. Wersja 1.6.2 zawiera te zatwierdzenia.

Wersja 1.6.1

7 lutego 2024 r.

Usługa androidx.compose.runtime:runtime-*:1.6.1 została zwolniona. Wersja 1.6.1 zawiera te zatwierdzenia.

Poprawki błędów

  • Wywołuj wywołanie zwrotne pod numerem onRelease w tej samej kolejności jak w przypadku numeru onForgotten. (2CD790)
  • Filtruj zmienione stany, których nie zaobserwowano w: snapshotFlow. (796B80).

Wersja 1.6.0

24 stycznia 2024 r.

Usługa androidx.compose.runtime:runtime-*:1.6.0 została zwolniona. Wersja 1.6.0 zawiera te zatwierdzenia.

Ważne zmiany wprowadzone od wersji 1.5.0

Nowe funkcje

  • Wyjątki ponownego zgłoszenia, które są odrzucane podczas pętli ponownej kompozycji (4dff9a)

Optymalizacje skuteczności

  • Optymalizuj zmiany w rejestrowaniu stanów zrzutów (28c3fe)
  • Optymalizacja rememberSaveable (f01d79)
  • Odrocz ponowne odczytywanie stanów derywowanych do momentu zarejestrowania zmian (f38099)
  • Poprawienie lokalnych wartości kompozycji (A337ea)

Poprawki błędów

  • Napraw wyciek pamięci tabeli przedziałów (73fcfe)
  • Pomiń ponowne kompozycje podkomponentów, które zostaną usunięte. (Ieeb99, b/254645321)
  • Aktywuj cykl życia RememberObserver tylko wtedy, gdy jest on przechowywany w obliczeniach zapamiętywania. (f6b4dc)
  • Ogranicz przechwytywanie funkcji $dirty do wbudowanych lambda. (acfca0)
  • Popraw ruchomą treść, która czasami otrzymuje niewłaściwe lokalne kompozycja. (035cd6).

Wersja 1.6.0-rc01

10 stycznia 2024 r.

Usługa androidx.compose.runtime:runtime-*:1.6.0-rc01 została zwolniona. Wersja 1.6.0-rc01 zawiera te zatwierdzenia.

Wersja 1.6.0-beta03

13 grudnia 2023 r.

Usługa androidx.compose.runtime:runtime-*:1.6.0-beta03 została zwolniona. Wersja 1.6.0-beta03 zawiera te zatwierdzenia.

Wersja 1.6.0-beta02

29 listopada 2023 r.

Usługa androidx.compose.runtime:runtime-*:1.6.0-beta02 została zwolniona. Wersja 1.6.0-beta02 zawiera te zatwierdzenia.

Wersja 1.6.0-beta01

15 listopada 2023 r.

Usługa androidx.compose.runtime:runtime-*:1.6.0-beta01 została zwolniona. Wersja 1.6.0-beta01 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Propaguj określone wartości stabilności w adnotacjach. (274a4c)

Poprawki błędów

  • Używaj zasady referencyjnej dla stanu lokalnego zakresu kompozycji w kontekście. (83361c)
  • Ogranicz przechwytywanie $dirty do wbudowanych lambda. (Acfca0)
  • Popraw ruchomą treść, która czasami otrzymuje niewłaściwe lokalne kompozycja. (035cd6)
  • Używaj szybszych nieprzydzielonych map haszujących w RecomposeScopeImpl. (D79494)
  • Używaj konta ObjectIntMap w aplikacji DerivedState. (21862e)
  • Użyj wartości IntRef dla całkowitej wartości SnapshotThreadLocal w polu DerivedState. (04eaf4)

Wersja 1.6.0-alpha08

18 października 2023 r.

Usługa androidx.compose.runtime:runtime-*:1.6.0-alpha08 została zwolniona. Wersja 1.6.0-alfa08 zawiera te zatwierdzenia.

Poprawki błędów

  • Aktywuj cykl życia RememberObserver tylko wtedy, gdy jest on przechowywany w obliczeniach zapamiętywania. (f6b4dc)
  • Popraw przydziały w sortowaniu listy unieważnień. (954d63)
  • Użyj nowych map bez przydziałów w regionie SnapshotStateObserver. (4303CE)
  • Usuń unieważnienia po dezaktywacji kompozycji. (E001be)

Wersja 1.6.0-alpha07

4 października 2023 roku

Usługa androidx.compose.runtime:runtime-*:1.6.0-alpha07 została zwolniona. Wersja 1.6.0-alfa07 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Element SnapshotStateList jest teraz oznaczony jako RandomAccess, aby można było używać wersji pomocniczej listy do bezpośredniego indeksowania. (I5210c, b/219554654)

Wersja 1.6.0-alpha06

20 września 2023 r.

Usługa androidx.compose.runtime:runtime-*:1.6.0-alpha06 została zwolniona. Wersja 1.6.0-alfa06 zawiera te zatwierdzenia.

Wersja 1.6.0-alpha05

6 września 2023 r.

Usługa androidx.compose.runtime:runtime-*:1.6.0-alpha05 została zwolniona. Wersja 1.6.0-alfa05 zawiera te zatwierdzenia.

Wersja 1.6.0-alpha04

23 sierpnia 2023 r.

Usługa androidx.compose.runtime:runtime-*:1.6.0-alpha04 została zwolniona. Wersja 1.6.0-alfa04 zawiera te zatwierdzenia.

Nowe funkcje

  • Wyjątki ponownego zgłoszenia, które są odrzucane podczas pętli ponownej kompozycji (4dff9a)

Zmiany interfejsu API

  • Dodano metodę dezaktywacji funkcji ReusableComposition, która usuwa obserwacje, ale pozostawia węzły na swoim miejscu. Dezaktywowaną kompozycję można ponownie aktywować, wywołując funkcję setContent. (Ib7f31)
  • Dodaj interfejs ReusableComposition do zarządzania cyklem życia i ponownym używaniem podkompozycji. (I812d1, b/252846775)

Wersja 1.6.0-alpha03

9 sierpnia 2023 r.

Usługa androidx.compose.runtime:runtime-*:1.6.0-alpha03 została zwolniona. Wersja 1.6.0-alfa03 zawiera te zatwierdzenia.

Poprawki błędów

  • Napraw nową optymalizację CompositionLocalProvider (3118e88)
  • Popraw sposób demontowania przenoszonych węzłów treści. (5e3d59b)

Wersja 1.6.0-alpha02

26 lipca 2023 r.

Usługa androidx.compose.runtime:runtime-*:1.6.0-alpha02 została zwolniona. Wersja 1.6.0-alfa02 zawiera te zatwierdzenia.

Nowe funkcje i ulepszenia w zakresie wydajności

  • Optymalizacja rememberSaveable (f01d79)
  • Odrocz ponowne odczytywanie stanów derywowanych do momentu zarejestrowania zmian (f38099)
  • Poprawienie lokalnych wartości kompozycji (A337ea)
  • Grupa SideEffect jest oznaczona jako @ExplicitGroupsComposable, aby uniknąć generowania grupy. (I74815)
  • Unikaj porównywania kompozycji lokalnych w przypadku ponownego użycia (782071)

Zmiany interfejsu API

  • W przypadku funkcji CompositionLocalProviders dodano specjalne nadmiarowe wielkość liter, co pozwala uniknąć narzutu pracochłonnego w celu przyspieszenia przekazywania wielu wartości, ale jest to nadmiarowe w przypadku pojedynczej wartości. (I6d640, b/288169379)

Poprawki błędów

  • Napraw wyciek pamięci tabeli przedziałów (73fcfe)
  • Rozwiąż problem z przywracaniem wartości rememberSaveable, gdy funkcja stateSaver zwraca wartość null (90748c)

Wersja 1.6.0-alpha01

21 czerwca 2023 r.

Usługa androidx.compose.runtime:runtime-*:1.6.0-alpha01 została zwolniona. Wersja 1.6.0-alfa01 zawiera te zatwierdzenia.

Poprawki błędów

  • Pomiń ponowne kompozycje podkomponentów, które zostaną usunięte. (Ieeb99, b/254645321)
  • Zmniejszono przydziały podczas stosowania zrzutów. (I65c09)
  • Unikaj obliczania wartości readableHash w DerivedState, jeśli zrzut nie został zmodyfikowany (68c565)

Wersja 1.5

Wersja 1.5.4

18 października 2023 r.

Usługa androidx.compose.runtime:runtime-*:1.5.4 została zwolniona. Wersja 1.5.4 zawiera te zatwierdzenia.

Wersja 1.5.3

4 października 2023 roku

Usługa androidx.compose.runtime:runtime-*:1.5.3 została zwolniona. Wersja 1.5.3 zawiera te zatwierdzenia.

Wersja 1.5.2

27 września 2023 r.

Usługa androidx.compose.runtime:runtime-*:1.5.2 została zwolniona. Wersja 1.5.2 zawiera te zatwierdzenia.

Wersja 1.5.1

6 września 2023 r.

Usługa androidx.compose.runtime:runtime-*:1.5.1 została zwolniona. Wersja 1.5.1 zawiera te zatwierdzenia.

Wersja 1.5.0

9 sierpnia 2023 r.

Usługa androidx.compose.runtime:runtime-*:1.5.0 została zwolniona. Wersja 1.5.0 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Usunięto przydziały w zmianie kompozycji, animacjach kolorów i elementach AndroidComposeView. (Ib2bfa)
  • Dodano adnotację @StateFactoryMarker do oznaczania funkcji, które tworzą stany i które muszą być uwzględnione w wywołaniu remember. (I64550)
  • Dodaj podstawowe wersje State i MutableState (fb3d89)
  • Dodano: Snapshot.isApplyObserverNotificationPending (I672a5)
  • Dodaliśmy podstawowe wersje interfejsu API State, dzięki czemu możliwe jest śledzenie wartości Int, Long, Float i Double w obiektach State bez nałożenia kary za autoboxing. Aby z nich korzystać, użyj nowych metod fabrycznych: mutableIntState(Int), mutableFloatStateOf(Float) itp. (I48e43)

Poprawki błędów

  • Pomiń ponowne kompozycje podkomponentów, które zostaną usunięte. (Ieeb99, b/254645321)
  • Nie zachowuj odniesienia do zrzutu w: ComposerImpl (0206f7)
  • Nie stosuj kompozycji dwukrotnie (f5791b)
  • Sprawdź unieważnienie niezainicjowanych wartości stanu derywowanego (aa2a92)
  • Wywołaj onEndChanges podczas usuwania kompozycji. (62cc8c)
  • Rozwiązywanie problemów z przenoszeniem treści do podkompozycji (4beb41)
  • Naprawianie potencjalnych blokad wzajemnych (c1a425 i 8edce0)
  • Rekompozytor utworzony dla okna Androida będzie teraz blokować wywołania withFrameNanos, a nie całą kompozycję, gdy otrzyma powiadomienie ON_STOP. Oznacza to, że okna powiązane z zatrzymanymi działaniami będą nadal ponownie komponować się w przypadku zmian danych, ale animacje lub inne wywołanie elementu withFrameNanos będą blokowane. (Id9e7f, b/240975572)
  • Wykonaj wywołania zwrotne dezaktywacji dla LayoutNode przed usunięciem efektów 3784073
  • Popraw zmienione flagi ponownie uruchomionej funkcji lambda ea81df9
  • Popraw regresję edycji na żywo w przypadku funkcji kompozycyjnej z węzłami 73fd4d8
  • Funkcja ON_STOP powinna wstrzymywać transmisje zegara dotyczące klatek zamiast animacji ae276f1.
  • Unieważnij zakresy (SnapshotStateObserver) dla niezmienionych stanów derywowanych 84d9b1c
  • Naprawa potencjalnej blokady blokady podczas usuwania kompozycji 28761fc
  • Rozwiązywanie problemów z przenoszeniem treści do podkompozycji 92d4156
  • Popraw zmienione flagi ponownie uruchomionej funkcji lambda (8a03e9)
  • Przed usunięciem efektów wykonaj wywołania zwrotne dezaktywacji dla LayoutNode (8b0fa4)
  • Napraw problem endToMarker() podczas kończenia grup węzłów. (D71D980)
  • Użyj bieżącej grupy SlotWriter do sprawdzenia dezaktywacji (a0b518b)
  • Usuń element fill w narzędziu SlotTable.moveSlotGapTo() i przesuń go do zamknięcia (81f9935)
  • Rozwiązywanie problemów z brakującymi unieważnieniami podczas przenoszenia treści (1d7c024)
  • Naprawianie natychmiastowego unieważniania przeniesionych treści (8676618)

Ulepszenia wydajności

  • Unikaj obliczania wartości readableHash w DerivedState, jeśli zrzut nie został zmodyfikowany. (307102).
  • Ograniczone przydziały (I65c09, d7ea77, 727974 i 445808)
  • Szybkie anulowanie tworzenia wiadomości CoroutineScopes (a55362 i bd382f)
  • Zastępowanie rejestrów obiektów stanu z niedostępnymi rekordami stanu (c986960)
  • Podczas tworzenia grup użyj komponentu kompozytora z prawidłowym zakresem (9a5e5b6)
  • Użyj IdentityArraySet do przechowywania unieważnionych zrzutów (7f60cca)
  • Ogranicz przydziały obserwacji na potrzeby zrzutów (5bc535f)

Wersja 1.5.0-rc01

26 lipca 2023 r.

Usługa androidx.compose.runtime:runtime-*:1.5.0-rc01 została zwolniona. Wersja 1.5.0-rc01 zawiera te zatwierdzenia.

Poprawki błędów

  • Odrocz ponowne odczytywanie stanów derywowanych do momentu zarejestrowania zmian (f38099)

  • Dostępna jest opcjonalna kontrola, która zaleca migrację wywołań mutableStateOf() do odpowiednich typów specjalistycznych obiektów podstawowych. Identyfikator linta to AutoboxingStateCreation. Wcześniej ta kontrola była domyślnie włączona we wszystkich projektach. Aby zobaczyć to ostrzeżenie w edytorze Androida Studio oraz w danych wyjściowych projektu lint, zmień jego wagę z informacyjnej na ostrzeżenie (lub wyższą), zadeklarując warning "AutoboxingStateCreation" w konfiguracji build.gradle lub build.gradle.kts, w sposób pokazany poniżej (I34f7e):

        android {
            lint {
                warning "AutoboxingStateCreation"
            }
            ...
        }
    

Wersja 1.5.0-beta03

28 czerwca 2023 r.

Usługa androidx.compose.runtime:runtime-*:1.5.0-beta03 została zwolniona. Wersja 1.5.0-beta03 zawiera te zatwierdzenia.

Poprawki błędów

  • Pomiń ponowne kompozycje podkomponentów, które zostaną usunięte. (Ieeb99, b/254645321)

Wersja 1.5.0-beta02

7 czerwca 2023 r.

Usługa androidx.compose.runtime:runtime-*:1.5.0-beta02 została zwolniona. Wersja 1.5.0-beta02 zawiera te zatwierdzenia.

Ulepszenia wydajności

  • Unikaj obliczania wartości readableHash w DerivedState, jeśli zrzut nie został zmodyfikowany. (307102).

Wersja 1.5.0-beta01

24 maja 2023 r.

Usługa androidx.compose.runtime:runtime-*:1.5.0-beta01 została zwolniona. Wersja 1.5.0-beta01 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Usunięto alokacje w zmianie kompozycji, animacji kolorów i funkcji AndroidComposeView (Ib2bfa).
  • Dodano adnotację @StateFactoryMarker do oznaczania funkcji, które tworzą stany i które muszą być uwzględnione w wywołaniu remember. (I64550)
  • Dodaj podstawowe wersje State i MutableState (fb3d89)
  • Dodano: Snapshot.isApplyObserverNotificationPending (I672a5)

Poprawki błędów

  • Ograniczone przydziały (I65c09, d7ea77, 727974 i 445808)
  • Nie zachowuj odniesienia do zrzutu w: ComposerImpl (0206f7)
  • Szybkie anulowanie tworzenia wiadomości CoroutineScopes (a55362 i bd382f)
  • Nie stosuj kompozycji dwukrotnie (f5791b)
  • Sprawdź unieważnienie niezainicjowanych wartości stanu derywowanego (aa2a92)
  • Wywołaj onEndChanges podczas usuwania kompozycji. (62cc8c)
  • Rozwiązywanie problemów z przenoszeniem treści do podkompozycji (4beb41)
  • Naprawianie potencjalnych blokad wzajemnych (c1a425
  • Funkcja ON_STOP powinna wstrzymywać transmisje zegara dotyczące klatek zamiast kompozycji (f4a2d1).
  • Popraw zmienione flagi ponownie uruchomionej funkcji lambda (8a03e9)
  • Przed usunięciem efektów wykonaj wywołania zwrotne dezaktywacji dla LayoutNode (8b0fa4)

Treści tłumaczone przez użytkowników zewnętrznych

  • Dodano: Snapshot.isApplyObserverNotificationPending (I672a5)

Wersja 1.5.0-alpha04

10 maja 2023 r.

Usługa androidx.compose.runtime:runtime-*:1.5.0-alpha04 została zwolniona. Wersja 1.5.0-alfa04 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Dodaliśmy podstawowe wersje interfejsu API State, dzięki czemu możliwe jest śledzenie wartości Int, Long, Float i Double w obiektach State bez nałożenia kary za autoboxing. Aby z nich korzystać, użyj nowych metod fabrycznych: mutableIntState(Int), mutableFloatStateOf(Float) itp. (I48e43)

Poprawki błędów

  • Wywołaj onEndChanges podczas usuwania kompozycji. Zaznaczenie węzłów usunięte podczas Composition.dispose subskrybują funkcję onEndChanges w celu resetowania zaznaczenia.(03d4a47)

  • Zadbaj o unieważnienie niezainicjowanych wartości stanu derywowanego. Każdy stan derywowany jest powiązany z listą zależności w funkcji SnapshotStateObserver, która służy do unieważniania zakresów powiązanych ze stanem derywowanym, gdy tylko zależność się zmienia. Zmiana zależności jest rejestrowana podczas przechodzenia zrzutu ekranu, co może nastąpić po odczytaniu stanu derywowanego (w wyniku wywołania funkcji Snapshot.notifyObjectsInitialized()).

    Poprzednia logika obserwacji stanu derywowanego stanu w SnapshotStateObserver polegała na usunięciu starych zależności i odczytaniu nowej wartości. Doprowadziło to do wystąpienia stanu wyścigu, w którym unieważnienie zależności nie zostało zarejestrowane w stanie oczyszczonym.

    Ta zmiana zmienia kolejność odczytu stanu deryfonu i czyszczenia zależności, dzięki czemu unieważnianie zawsze odbywa się w prawidłowym stanie. (C472be6)

Wersja 1.5.0-alpha03

19 kwietnia 2023 r.

Usługa androidx.compose.runtime:runtime-*:1.5.0-alpha03 została zwolniona. Wersja 1.5.0-alfa03 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Rekompozytor utworzony dla okna Androida będzie teraz blokować wywołania withFrameNanos, a nie całą kompozycję, gdy otrzyma powiadomienie ON_STOP. Oznacza to, że okna powiązane z zatrzymanymi działaniami będą nadal ponownie komponować się w przypadku zmian danych, ale animacje lub inne wywołanie elementu withFrameNanos będą blokowane. (Id9e7f, b/240975572)

Poprawki błędów

  • Naprawianie potencjalnej blokady zakleszczeń na liście zrzutów i na mapie 5c1a425
  • Wykonaj wywołania zwrotne dezaktywacji dla LayoutNode przed usunięciem efektów 3784073
  • Popraw zmienione flagi ponownie uruchomionej funkcji lambda ea81df9
  • Popraw regresję edycji na żywo w przypadku funkcji kompozycyjnej z węzłami 73fd4d8
  • Funkcja ON_STOP powinna wstrzymywać transmisje zegara dotyczące klatek zamiast animacji ae276f1.
  • Unieważnij zakresy (SnapshotStateObserver) dla niezmienionych stanów derywowanych 84d9b1c
  • Naprawa potencjalnej blokady blokady podczas usuwania kompozycji 28761fc
  • Rozwiązywanie problemów z przenoszeniem treści do podkompozycji 92d4156

Wersja 1.5.0-alpha02

5 kwietnia 2023 r.

Usługa androidx.compose.runtime:runtime-*:1.5.0-alpha02 została zwolniona. Wersja 1.5.0-alfa02 zawiera te zatwierdzenia.

Nowe funkcje

  • Operator getValue Kotlin może teraz być kompozycyjny (f174f6e)

Poprawki błędów i ulepszenie działania aplikacji

  • Zastępowanie rejestrów obiektów stanu z niedostępnymi rekordami stanu (c986960)
  • Podczas tworzenia grup użyj komponentu kompozytora z prawidłowym zakresem (9a5e5b6).
  • Napraw problem endToMarker() podczas kończenia grup węzłów. (D71D980)
  • Użyj bieżącej grupy SlotWriter do sprawdzenia dezaktywacji (a0b518b)
  • Użyj IdentityArraySet do przechowywania unieważnionych zrzutów (7f60cca)
  • Usuń element fill w narzędziu SlotTable.moveSlotGapTo() i przesuń go do zamknięcia (81f9935)
  • Rozwiązywanie problemów z brakującymi unieważnieniami podczas przenoszenia treści (1d7c024)
  • Naprawianie natychmiastowego unieważniania przeniesionych treści (8676618)
  • Ogranicz przydziały obserwacji na potrzeby zrzutów (5bc535f)

Wersja 1.5.0-alpha01

22 marca 2023 r.

Usługa androidx.compose.runtime:runtime-*:1.5.0-alpha01 została zwolniona. Wersja 1.5.0-alfa01 zawiera te zatwierdzenia.

Nowe funkcje

  • Dodaje dyrektywę Modifier.Node#coroutineScope, aby umożliwić Modifier.Nodes uruchamianie współrzędnych (I76ef9)
  • Pozwól usłudze Modifier.Nodes na odczyt elementu CompositionLocals za pomocą interfejsu CompositionLocalConsumerModifierNode. (IB44df)

Wersja 1.4

Wersja 1.4.3

3 maja 2023 r.

Pakiet androidx.compose.runtime:runtime-*:1.4.3 został udostępniony bez zmian.

Wersja 1.4.2

19 kwietnia 2023 r.

Usługa androidx.compose.runtime:runtime-*:1.4.2 została zwolniona. Wersja 1.4.2 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawianie potencjalnej blokady zakleszczeń na liście zrzutów i na mapie 2eb6570

  • Dodanie treści do obiektu SnapshotStateList lub SnapshotStateMap może spowodować zakleszczenie, jeśli modyfikacja jest równoległa z bezpośrednim zapisem w rekordzie stanu. W związku ze zmianami wprowadzonymi przez model 93fcae828b, który wykorzystuje bezpośrednie zapisy do udostępniania nieużywanych rekordów, odnotowano znacznie większe prawdopodobieństwo wystąpienia tej sytuacji.

  • Blokady są teraz uporządkowane w taki sposób, że nigdy nie próbowano wykonać blokady migawki, gdy blokada mapy lub listy jest zablokowana.

Wersja 1.4.1

5 kwietnia 2023 r.

Usługa androidx.compose.runtime:runtime-*:1.4.1 została zwolniona. Wersja 1.4.1 zawiera te zatwierdzenia.

Poprawki błędów

  • Popraw zasadę endToMarker() podczas kończenia grup węzłów. d71d980

Wersja 1.4.0

22 marca 2023 r.

Usługa androidx.compose.runtime:runtime-*:1.4.0 została zwolniona. Wersja 1.4.0 zawiera te zatwierdzenia.

Ważne zmiany wprowadzone od wersji 1.3.0

  • Użyj zainicjowanej wartości z pola LiveData dla pierwszej kompozycji 3680e25
  • Dodaj ComposeNodeLifecycleCallback, aby obserwować cykl życia węzłów tworzenia. 8B6a258
  • Dodaj usługę parameterTypes do ComposableMethod 7b6c7ad

Poprawki błędów i ulepszenie działania aplikacji

  • Wyczyść oba indeksy zakresów w SnapshotStateObserver 29f4a3e
  • Dodaj potrzebne grupy w treści niemożliwych do pominięcia lambda 7d06752
  • Poprawa charakterystyki referencyjnej pamięci stanu zrzutu 93fcae8
  • Usuwanie pola w lokalnych wyszukiwaniach kompozycji 0875717
  • Użyj prawidłowego klucza w przypadku grup węzłów nieprzeznaczonych do wielokrotnego użytku 6388d8d
  • Ochrona urządzenia SnapshotStateObserver przed rekurencyjnym i równoczesnym stosowaniem 98cb6ba
  • Dodano sprawdzanie granic indeksu w metodzie „get” funkcji IdentityArraySet 35a77d3
  • Zaktualizuj moduł tworzenia wiadomości, aby używać rozszerzeń ViewTreeLifecycleOwner 21c2122
  • Wyślij powiadomienia o zastosowaniu, gdy Rekomponent zakończy ramkę. 98f2641
  • Napraw błąd indeksu poza granicami podczas anulowania Rekompozytora 8f8656f
  • Zawsze wymuszaj ponowne kompozycje, jeśli nadrzędni dostawcy kompozycji zmienili wartość 9526fcc
  • Tolerancja repozytorium dla anulowanych zadań a55f7ed
  • Poprawa obsługi unieważnień w przypadku dużej liczby kompozytorów 9b7ed67
  • Rozwiązywanie problemów z generowaniem grup zamykających dla zwrotów nielokalnych b6f590c

Wersja 1.4.0-rc01

8 marca 2023 r.

Usługa androidx.compose.runtime:runtime-*:1.4.0-rc01 została zwolniona. Wersja 1.4.0-rc01 zawiera te zatwierdzenia.

Poprawki błędów

Wersja 1.4.0-beta02

22 lutego 2023 roku

androidx.compose.runtime:runtime:1.4.0-beta02 i androidx.compose.runtime:runtime-saveable:1.4.0-beta02 zostały udostępnione. Wersja 1.4.0-beta02 zawiera te zatwierdzenia.

Wersja 1.4.0-beta01

8 lutego 2023 r.

Usługa androidx.compose.runtime:runtime-*:1.4.0-beta01 została zwolniona. Wersja 1.4.0-beta01 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Dodano ComposeNodeLifecycleCallback, który umożliwia obserwowanie cyklu życia węzłów tworzenia wiadomości (I3731b)
  • Do Composer.disableSourceInformation() dodano funkcję @TestOnly, ponieważ tę funkcję można wywoływać tylko w ramach testu. (I896c8)

Poprawki błędów

  • Usuń pasy w lokalnych wyszukiwaniach kompozycji (62f66a)
  • Poprawa charakterystyki referencyjnej pamięci stanu zrzutu (dfb451)

Wersja 1.4.0-alpha05

25 stycznia 2023 r.

androidx.compose.runtime:runtime:1.4.0-alpha05 i androidx.compose.runtime:runtime-saveable:1.4.0-alpha05 zostały udostępnione. Wersja 1.4.0-alfa05 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Więcej typów i wartości null funkcji wbudowanych/wycofanych (I24f91)

Wersja 1.4.0-alpha04

11 stycznia 2023 r.

Usługa androidx.compose.runtime:runtime-*:1.4.0-alpha04 została zwolniona. Wersja 1.4.0-alfa04 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • TestMonotonicFrameClock używa teraz prawidłowej adnotacji do eksperymentu. (I95c9e)

Poprawki błędów

  • Ochrona urządzenia SnapshotStateObserver przed rekurencyjnym i równoczesnym stosowaniem (d902fb)

Wersja 1.4.0-alpha03

7 grudnia 2022 r.

Usługa androidx.compose.runtime:runtime-*:1.4.0-alpha03 została zwolniona. Wersja 1.4.0-alfa03 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • dodanie do klasy ComposableMethod nowej metody publicznej analogicznej do klasy java.lang.reflect.Method#getParameterTypes() (Iab0c3)

Poprawki błędów

  • Powiadomienia o zastosowaniu zrzutu są teraz wysyłane, gdy Recomposer zakończy stosowanie zmian. (Iad6c0, b/222093277)

Wersja 1.4.0-alpha02

9 listopada 2022 r.

Usługa androidx.compose.runtime:runtime-*:1.4.0-alpha02 została zwolniona. Wersja 1.4.0-alfa02 zawiera te zatwierdzenia.

Wersja 1.4.0-alpha01

24 października 2022 r.

Usługa androidx.compose.runtime:runtime-*:1.4.0-alpha01 została zwolniona. Wersja 1.4.0-alfa01 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • W SnapshotStateList i SnapshotStateMap zostały teraz zaimplementowane z poszanowaniem zasady toList() i toMap(). Te metody zwracają bieżące treści bez wprowadzania kopii, ponieważ zwracają wewnętrzne, stałe dane używane do przechowywania treści. Tej wartości można użyć na przykład do wygenerowania przepływu wartości za pomocą funkcji snapshotFlow bez konieczności kopiowania danych. (Ica2bd).

Wersja 1.3

Wersja 1.3.3

11 stycznia 2023 r.

Usługa androidx.compose.runtime:runtime-*:1.3.3 została zwolniona. Wersja 1.3.3 zawiera te zatwierdzenia.

  • Brak zmian od wersji 1.3.2

Wersja 1.3.2

7 grudnia 2022 r.

Usługa androidx.compose.runtime:runtime-*:1.3.2 została zwolniona. Wersja 1.3.2 zawiera te zatwierdzenia.

Poprawki błędów

  • Zaktualizowano, aby zapewnić obsługę androidx.compose.ui 1.3.2

Wersja 1.3.1

9 listopada 2022 r.

Usługa androidx.compose.runtime:runtime-*:1.3.1 została zwolniona. Wersja 1.3.1 zawiera te zatwierdzenia.

Wersja 1.3.0

24 października 2022 r.

Usługa androidx.compose.runtime:runtime-*:1.3.0 została zwolniona. Wersja 1.3.0 zawiera te zatwierdzenia.

Ważne zmiany wprowadzone od wersji 1.2.0

Obsługa wyjątków / pomoc przy edycji na żywo

Śledzenie kompozycji

Interfejsy API Composable Reflection

Poprawki dotyczące środowiska wykonawczego

System zrzutów

Wersja 1.3.0-rc01

5 października 2022 r.

Usługa androidx.compose.runtime:runtime-*:1.3.0-rc01 została zwolniona. Wersja 1.3.0-rc01 zawiera te zatwierdzenia.

Poprawki błędów

  • Poprawiono parametr ArrayIndexOutOfBoundsException pochodzący z tabeli przedziałów (b/249076084).

Wersja 1.3.0-beta03

21 września 2022 r.

Usługa androidx.compose.runtime:runtime-*:1.3.0-beta03 została zwolniona. Wersja 1.3.0-beta03 zawiera te zatwierdzenia.

Wyjątkowa zmiana w działaniu

  • Parametr do remember i rememberCoroutineScope został zmieniony na crossinline. Spowoduje to zgłoszenie błędu przy wczesnych zwrotach zamiast umożliwienia wcześniejszego zwrotu, co spowoduje zgłoszenie późniejszego błędu wewnętrznego.
  • Ta zmiana może potencjalnie prowadzić do zgłaszania nowych błędów kompilatora, przez co konieczne będzie usunięcie z obiektów lambda przekazywanych do tych funkcji zwracanych wartości nielokalnych. (Ibea62).

Wersja 1.3.0-beta02

7 września 2022 roku

Usługa androidx.compose.runtime:runtime-*:1.3.0-beta02 została zwolniona. Wersja 1.3.0-beta02 zawiera te zatwierdzenia.

Poprawki błędów

  • Zaktualizowany interfejs API (I64ca0)

Wersja 1.3.0-beta01

24 sierpnia 2022 r.

Usługa androidx.compose.runtime:runtime-*:1.3.0-beta01 została zwolniona. Wersja 1.3.0-beta01 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Do CompositionData dodano metodę find, aby umożliwić narzędziom deweloperskim korzystającym z tego interfejsu API szybkie znajdowanie podgrupy kompozycji na podstawie jej tożsamości. (I5794f)

Wersja 1.3.0-alfa03

10 sierpnia 2022 r.

Usługa androidx.compose.runtime:runtime-*:1.3.0-alpha03 została zwolniona. Wersja 1.3.0-alfa03 zawiera te zatwierdzenia.

Wersja 1.3.0-alfa02

27 lipca 2022 roku

Usługa androidx.compose.runtime:runtime-*:1.3.0-alpha02 została zwolniona. Wersja 1.3.0-alfa02 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Ponownie dodano atrybut ComposerKt.traceEventStart(Int, String), by zapewnić zgodność wsteczną (I6e6de)

Wersja 1.3.0-alpha01

29 czerwca 2022 r.

Usługa androidx.compose.runtime:runtime-*:1.3.0-alpha01 została zwolniona. Wersja 1.3.0-alfa01 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Przeniesienie funkcji narzędziowych do środowiska wykonawczego (I4f729)

Wersja 1.2

Wersja 1.2.1

10 sierpnia 2022 r.

Usługa androidx.compose.runtime:runtime-*:1.2.1 została zwolniona. Wersja 1.2.1 zawiera te zatwierdzenia.

Poprawki błędów

  • Rozwiązany wyciek pamięci: usunięcie zagnieżdżonych zrzutów utworzonych z przezroczystych zrzutów b/239603305

Wersja 1.2.0

27 lipca 2022 roku

Usługa androidx.compose.runtime:runtime-*:1.2.0 została zwolniona. Wersja 1.2.0 zawiera te zatwierdzenia.

Ważne zmiany od 1.1.0

  • W środowisku wykonawczym Compose wprowadzono w wersji 1.2.0 kilka funkcji oraz wiele poprawek błędów stabilizujących. Najważniejszą nową funkcją było wprowadzenie movableContentOfinterfejsu API, który można wykorzystać do zapewnienia złożonych wrażeń użytkownika, takich jak przejścia wspólnych elementów. Interfejs API movableContentOf konwertuje funkcję kompozycyjnej lambda w lambdę, która przenosi jej stan i odpowiadające im węzły do dowolnej nowej lokalizacji. Gdy poprzednie wywołanie opuszcza kompozycję, stan zostaje tymczasowo zachowywany, a jeśli do kompozycji pojawi się nowe wywołanie funkcji lambda, stan wraz z powiązanymi węzłami zostanie przeniesiony do lokalizacji nowego wywołania. Jeśli nie dodasz nowego wywołania, stan zostanie trwale usunięty, a obserwatorzy zostaną o tym powiadomieni.

  • Jeśli funkcja lambda movableContentOf zostanie wywołana wiele razy w tej samej kompozycji, dla każdego wywołania tworzony jest nowy stan i węzły. Gdy wywołania opuszczają kompozycję i dochodzą nowe wywołania, stan jest przenoszony z pierwszego opuszczania do wywołań przychodzących w kolejności ich wywołania. Wszystkie stany, które nie zostały objęte nowymi wywołaniami, zostaną trwale usunięte.

  • Oprócz tej i kilku innych nowych funkcji spędziliśmy dużo czasu na stabilizacji środowiska wykonawczego i systemu stanu zrzutu. Usunięto różne wycieki pamięci i zoptymalizowano ścieżki kodu.

  • Podsumowanie zmian znajdziesz poniżej:

Nowe funkcje w 1.2

Skuteczność w: 1.2

Poprawki błędów w usłudze 1.2

Wersja 1.2.0-rc03

29 czerwca 2022 r.

Usługa androidx.compose.runtime:runtime-*:1.2.0-rc03 została zwolniona. Wersja 1.2.0-rc03 zawiera te zatwierdzenia.

Poprawki błędów

  • Uzyskane obserwacje stanu były wcześniej bezwarunkowo usuwane z zakresu ponownego budowania i kompozycji razem, co naruszało inne zakresy, które nadal mogą rejestrować stan odbioru. Ta zmiana spowoduje usunięcie instancji stanu derywowanego tylko wtedy, gdy nie jest już obserwowana przez inne zakresy. (b/236618362)

Wersja 1.2.0-rc02

22 czerwca 2022 r.

Usługa androidx.compose.runtime:runtime-*:1.2.0-rc02 została zwolniona. Wersja 1.2.0-rc02 zawiera te zatwierdzenia.

Wersja 1.2.0-rc01

15 czerwca 2022 r.

Usługa androidx.compose.runtime:runtime-*:1.2.0-rc01 została zwolniona. Wersja 1.2.0-rc01 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Interfejsy w bibliotekach tworzenia wiadomości są teraz tworzone przy użyciu domyślnych metod interfejsu jdk8 (I5bcf1)

Wersja 1.2.0-beta03

1 czerwca 2022 r.

Usługa androidx.compose.runtime:runtime-*:1.2.0-beta03 została zwolniona. Wersja 1.2.0-beta03 zawiera te zatwierdzenia.

Wersja 1.2.0-beta02

18 maja 2022 r.

Usługa androidx.compose.runtime:runtime-*:1.2.0-beta02 została zwolniona. Wersja 1.2.0-beta02 zawiera te zatwierdzenia.

Wersja 1.2.0-beta01

11 maja 2022 roku

Usługa androidx.compose.runtime:runtime-*:1.2.0-beta01 została zwolniona. Wersja 1.2.0-beta01 zawiera te zatwierdzenia.

Nowe funkcje

  • Pierwsza wersja beta 1.2.

Zmiany interfejsu API

  • Dodano eksperymentalną Snapshot.unsafeEnter/unsafeLeave (I108f3)
  • Dodano eksperymentalny interfejs API Snapshot.asContextElement() (Iff072)
  • Adnotacji @ComposableTarget i adnotacji oznaczonych przez @ComposableTargetMarker można teraz używać w zakresie pliku przy użyciu prefiksu @file. Użycie adnotacji docelowej w zakresie pliku spowoduje, że kompilator przyjmie, że wszystkie funkcje kompozycyjne w pliku są kierowane do powiązanego zastosowania. Na przykład użycie @file:UiComposable powoduje deklarowanie, że wszystkie funkcje @Composable są kierowane na aplikację UI tworzenia wiadomości. Funkcja, która musi kierować reklamy na innego dostawcę, musi jawnie dostarczyć adnotację znacznika docelowego miejsca docelowego dla wybranego dostawcy. (I40804)

Wersja 1.2.0-alpha08

20 kwietnia 2022 r.

Usługa androidx.compose.runtime:runtime-*:1.2.0-alpha08 została zwolniona. Wersja 1.2.0-alfa08 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Dodano TracingInProgress do interfejsu CompositionTracer. (Ic6f12).
  • Dodaj urządzenie recomposeScopeIdentity do usługi Composer (I0C873)
  • Interfejsy API śledzenia z ograniczeniami (Composer.setTracer) do: OptIn(InternalComposeTracingApi). (I9187F)
  • Dodano ResuableContentHost, który zapewnia większą kontrolę nad okresem tworzenia stanu tworzonego dla treści wielokrotnego użytku. Jeśli na przykład podkompozycja nie jest tymczasowo używana, można zdezaktywować tę treść, co spowoduje zapomnienie wszystkich zapamiętanych stanów kompozycji, np. wszystkie efekty jednorazowe. (I2c0f2, b/220322704)

Wersja 1.2.0-alpha07

6 kwietnia 2022 roku

Usługa androidx.compose.runtime:runtime-*:1.2.0-alpha07 została zwolniona. Wersja 1.2.0-alfa07 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Dodano nową funkcję Snapshot.withoutReadObservation { ... }. Umożliwia użytkownikom uruchamianie przekazywanej funkcji lambda bez subskrybowania zmian wartości stanu odczytywanych podczas tego bloku. Może być przydatna w przypadkach, gdy chcesz skorzystać z bezpiecznego zapisu/odczytu wątków bazujących na zrzutach, ale chcesz mieć możliwość odczytania wartości bez potrzeby niepotrzebnej zmiany kompozycji czy ponownych pomiarów. (I9f365, b/214054486)

Wersja 1.2.0-alpha06

23 marca 2022 r.

Usługa androidx.compose.runtime:runtime-*:1.2.0-alpha06 została zwolniona. Wersja 1.2.0-alfa06 zawiera te zatwierdzenia.

Wersja 1.2.0-alpha05

9 marca 2022 r.

Usługa androidx.compose.runtime:runtime-*:1.2.0-alpha05 została zwolniona. Wersja 1.2.0-alfa05 zawiera te zatwierdzenia.

Treści tłumaczone przez użytkowników zewnętrznych

  • Zaktualizowano, aby korzystać z współrzędnych Kotlinx w wersji 1.6.0 (I3366d)

Wersja 1.2.0-alfa04

23 lutego 2022 r.

Usługa androidx.compose.runtime:runtime-*:1.2.0-alpha04 została zwolniona. Wersja 1.2.0-alfa04 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Dodano ComposableTarget, ComposableTargetMarker i ComposableOpenTarget, które umożliwiają raportowanie w czasie kompilacji, kiedy funkcja kompozycyjna jest wywoływana pod kątem kierowania na aplikację, która nie została przez nią zaprojektowana.

    W większości przypadków adnotacje można wywnioskować dzięki wtyczce kompilatora, więc nie można używać ich bezpośrednio . Przypadki, których nie można wywnioskować, to m.in. utworzenie i użycie niestandardowego zastosowania, abstrakcyjnych funkcji kompozycyjnych (np. metod interfejsu), pól lub zmiennych globalnych, które są obiektami kompozycyjnymi (wywnioskowane są lokalne zmienne i parametry) lub podczas korzystania z funkcji ComposeNode albo powiązanych funkcji kompozycyjnych.

    W przypadku zastosowania niestandardowych funkcje kompozycyjne wywołujące funkcję ComposeNode lub ReusableComposeNode muszą dodać adnotację CompoableTarget dla funkcji i dowolnych typów parametrów kompozycyjnych lambda. Zalecamy jednak utworzenie adnotacji zawierającej adnotację ComposableTargetMarker, a następnie użycie oznaczonej adnotacji zamiast bezpośrednio ComposableTarget. Adnotacja kompozycyjna oznaczona kodem ComposableTargetMarker jest równoważna z adnotacją ComposbleTarget z pełną i jednoznaczną nazwą klasy atrybutu jako parametrem zastosowania. Przykład użycia ComposableTargetMarker znajdziesz tutaj: anroidx.compose.ui.UiComposable. (I38f11)

Wersja 1.2.0-alfa03

9 lutego 2022 r.

Usługa androidx.compose.runtime:runtime-*:1.2.0-alpha03 została zwolniona. Wersja 1.2.0-alfa03 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Dodano funkcję movableContentOf, która konwertuje funkcję kompozycyjnej lambda w lambdę zmieniającą jej stan i odpowiadające im węzły do dowolnej nowej lokalizacji. Gdy poprzednie wywołanie opuszcza kompozycję, stan zostaje tymczasowo zachowywany, a jeśli do kompozycji pojawi się nowe wywołanie funkcji lambda, stan i powiązane z nim węzły zostaną przeniesione do lokalizacji nowego wywołania. Jeśli nie dodasz nowego wywołania, stan jest trwale usuwany, a obserwatorzy otrzymują powiadomienia.

    Jeśli funkcja lambda movableContentOf zostanie wywołana wielokrotnie z tej samej kompozycji, dla każdego wywołania tworzony jest nowy stan i węzły, a gdy wywołania opuszczają kompozycję i dochodzą nowe wywołania, stan przenoszony jest z pierwszego wyjścia do wywołań przychodzących w kolejności, w jakiej zostały wywołane. Wszystkie stany, które nie zostały objęte nowymi wywołaniami, są usuwane na stałe. (IB4850)

  • Do kompozycji dodaliśmy interfejs API śledzenia, aby umożliwić narzędziom zapewniające bardziej szczegółowe śledzenie funkcji kompozycyjnych. Kompilator generuje teraz wywołania interfejsu API śledzenia, które zawierają informacje o źródle. (Ib0eb5)

    Aby usunąć te wywołania i powiązane informacje o źródle z kompilacji wersji, dodaj tę regułę ProGuard:

      -assumenosideeffects public class androidx.compose.runtime.ComposerKt {
          boolean isTraceInProgress();
          void traceEventStart(int,java.lang.String);
          void traceEventEnd();
      }
    
  • Dodaj atrybut InternalComposeScope, który umożliwia narzędziom identyfikowanie utworu kompozycyjnego podczas zmiany kompozycji. (I07a3f)

Wersja 1.2.0-alfa02

26 stycznia 2022 r.

Usługa androidx.compose.runtime:runtime-*:1.2.0-alpha02 została zwolniona. Wersja 1.2.0-alfa02 zawiera te zatwierdzenia.

Wersja 1.2.0-alpha01

12 stycznia 2022 r.

Usługa androidx.compose.runtime:runtime-*:1.2.0-alpha01 została zwolniona. Wersja 1.2.0-alfa01 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Do CompositionData dodano pole identity do generowania identyfikatorów niewariantów w inspektorze układu. (IC116e).

Aktualizacje zależności

  • Teraz zależy od Kotlin 1.6.10.

Wersja 1.1

Wersja 1.1.1

23 lutego 2022 r.

Usługa androidx.compose.runtime:runtime-*:1.1.1 została zwolniona. Wersja 1.1.1 zawiera te zatwierdzenia.

Poprawki błędów

  • Napraw NullPointerException pod adresem androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList (aosp/1947059, b/206677462)
  • Naprawiono błąd spowodowany przez zawartość schowka przy odczytywaniu ze schowka na Androidzie. (I06020, b/197769306)
  • Poprawiono RTL w LazyVerticalGrid (aosp/1931080, b/207510535)

Wersja 1.1.0

9 lutego 2022 r.

Usługa androidx.compose.runtime:runtime-*:1.1.0 została zwolniona. Wersja 1.1.0 zawiera te zatwierdzenia.

Ważne zmiany wprowadzone od wersji 1.0.0

  • Stabilna obsługa efektu przewijania w Androidzie 12.
  • Ulepszenia rozmiaru docelowego elementu dotykowego
  • Pamiętaj, że w przypadku Compose 1.0 komponenty Material mają rozszerzać obszar układu, aby zapewnić zgodność z wytycznymi dotyczącymi ułatwień dostępu Material Design rozmiar docelowego elementu dotykowego. Na przykład docelowy element dotykowy przycisku zostanie powiększony do minimalnego rozmiaru 48x48dp, nawet jeśli ustawisz rozmiar przycisku na mniejszy. Dzięki temu interfejs Compose Material ma takie samo zachowanie jak komponenty stylu Material Design, co zapewnia spójne zachowanie w przypadku połączenia widoków i tworzenia wiadomości. Ta zmiana zagwarantuje też, że w przypadku tworzenia UI z użyciem komponentów Compose Material, minimalne wymagania dotyczące ułatwień dostępu docelowych elementów dotykowych będą spełnione.
  • Stabilna obsługa kolejki nawigacyjnej
  • Przeniesienie niektórych wcześniej eksperymentalnych interfejsów API do wersji stabilnej
  • pomoc dotycząca nowszych wersji Kotlin,

Wersja 1.1.0-rc03

26 stycznia 2022 r.

Usługa androidx.compose.runtime:runtime-*:1.1.0-rc03 została zwolniona. Wersja 1.1.0-rc03 zawiera te zatwierdzenia.

Poprawki błędów

  • Zaktualizowano, aby obsługiwała materiał tworzenia wiadomości 1.1.0-rc03

Wersja 1.1.0-rc01

15 grudnia 2021 roku

Usługa androidx.compose.runtime:runtime-*:1.1.0-rc01 została zwolniona. Wersja 1.1.0-rc01 zawiera te zatwierdzenia.

Wersja 1.1.0-beta04

1 grudnia 2021 r.

Usługa androidx.compose.runtime:runtime-*:1.1.0-beta04 została zwolniona. Wersja 1.1.0-beta04 zawiera te zatwierdzenia.

Nowe funkcje

  • Zaktualizowano, aby była zgodna z platformą Kotlin 1.6.0

Wersja 1.1.0-beta03

17 listopada 2021 r.

Usługa androidx.compose.runtime:runtime-*:1.1.0-beta03 została zwolniona. Wersja 1.1.0-beta03 zawiera te zatwierdzenia.

Wersja 1.1.0-beta02

3 listopada 2021 r.

Usługa androidx.compose.runtime:runtime-*:1.1.0-beta02 została zwolniona. Wersja 1.1.0-beta02 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Kod zrzutu został podzielony na kilka plików, ale wszystkie nadal znajdują się w tej samej klasie JVM. (IC6c98)

Wersja 1.1.0-beta01

27 października 2021 roku

Usługa androidx.compose.runtime:runtime-*:1.1.0-beta01 została zwolniona. Wersja 1.1.0-beta01 zawiera te zatwierdzenia.

Wersja 1.1.0-alpha06

13 października 2021 r.

Usługa androidx.compose.runtime:runtime-*:1.1.0-alpha06 została zwolniona. Wersja 1.1.0-alfa06 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Z metod narzędzia Composer, które muszą być wywoływane między modułami, usunięto element InternalCompilerApi (I1aa0b).
  • Interfejs Recomposer.state został wycofany i zastąpiony przez Recomposer.currentState, aby zmienić jego typ na StateFlow (Ic2ab3, b/197773820)

Wersja 1.1.0-alpha05

29 września 2021 r.

Usługa androidx.compose.runtime:runtime-*:1.1.0-alpha05 została zwolniona. Wersja 1.1.0-alfa05 zawiera te zatwierdzenia.

Wersja 1.1.0-alfa04

15 września 2021 r.

Usługa androidx.compose.runtime:runtime-*:1.1.0-alpha04 została zwolniona. Wersja 1.1.0-alfa04 zawiera te zatwierdzenia.

Wersja 1.1.0-alfa03

1 września 2021 roku

Usługa androidx.compose.runtime:runtime-*:1.1.0-alpha03 została zwolniona. Wersja 1.1.0-alfa03 zawiera te zatwierdzenia.

Nowe funkcje

  • Kompilator Compose obsługuje teraz starsze wersje środowiska wykonawczego Compose (1.0). Przed tą zmianą kompilator był zgodny tylko ze środowiskiem wykonawczym Compose w tej samej wersji lub nowszej. Po tej zmianie kompilator jest zgodny ze starszą wersją środowiska wykonawczego Compose (1.0). (Aosp/1796968).
  • Zaktualizowano funkcję Utwórz 1.1.0-alpha03, aby bazowała na Kotlinie 1.5.30. (I74545)

Wersja 1.1.0-alfa02

18 sierpnia 2021 r.

Usługa androidx.compose.runtime:runtime-*:1.1.0-alpha02 została zwolniona. Wersja 1.1.0-alfa02 zawiera te zatwierdzenia.

Wersja 1.1.0-alpha01

4 sierpnia 2021 r.

Usługa androidx.compose.runtime:runtime-*:1.1.0-alpha01 została zwolniona. Wersja 1.1.0-alfa01 zawiera te zatwierdzenia.

Wersja 1.0

Wersja 1.0.5

3 listopada 2021 r.

Usługa androidx.compose.runtime:runtime-*:1.0.5 została zwolniona. Wersja 1.0.5 zawiera te zatwierdzenia.

Poprawki błędów

  • Usunięto problem ze śledzeniem awarii w instancjach originStateOf. (Aosp/1792247)

Wersja 1.0.4

13 października 2021 r.

Usługa androidx.compose.runtime:runtime-*:1.0.4 została zwolniona. Wersja 1.0.4 zawiera te zatwierdzenia.

Aktualizacje zależności

  • Zaktualizowano na podstawie usługi Kotlin 1.5.31

Wersja 1.0.3

29 września 2021 r.

Usługa androidx.compose.runtime:runtime-*:1.0.3 została zwolniona. Wersja 1.0.3 zawiera te zatwierdzenia.

Aktualizacje zależności

  • Zaktualizowano na podstawie usługi Kotlin 1.5.30

Wersja 1.0.2

1 września 2021 roku

Usługa androidx.compose.runtime:runtime-*:1.0.2 została zwolniona. Wersja 1.0.2 zawiera te zatwierdzenia.

Zaktualizowano, aby obsługiwała wersję 1.0.2 Utwórz. Funkcja Compose 1.0.2 jest nadal zgodna z Kotlin 1.5.21.

Wersja 1.0.1

4 sierpnia 2021 r.

Usługa androidx.compose.runtime:runtime-*:1.0.1 została zwolniona. Wersja 1.0.1 zawiera te zatwierdzenia.

Aktualizacje zależności

  • Zaktualizowano w zależności od systemu Kotlin 1.5.21.

Wersja 1.0.0

28 lipca 2021 roku

Usługa androidx.compose.runtime:runtime-*:1.0.0 została zwolniona. Wersja 1.0.0 zawiera te zatwierdzenia.

Główne funkcje 1.0.0

To jest pierwsza stabilna wersja Compose. Więcej informacji znajdziesz na oficjalnym blogu wersji Compose.

Znane problemy

  • Jeśli korzystasz z Android Studio Bumblebee Canary 4 lub AGP 7.1.0-alpha04/7.1.0-alpha05, może dojść do tej awarii:

      java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
    

    Aby rozwiązać ten problem, tymczasowo zwiększ wartość parametru minSdkVersion w pliku build.gradle do wartości 24 lub nowszej. Ten problem zostanie naprawiony w następnej wersji Androida Studio Bumblebee i AGP 7.1. (b/194289155)

Wersja 1.0.0-rc02

14 lipca 2021 roku

Usługa androidx.compose.runtime:runtime-*:1.0.0-rc02 została zwolniona. Wersja 1.0.0-rc02 zawiera te zatwierdzenia.

  • Poprawiono warunki wyścigu w SnapshotStateObserver, które powodowały sporadyczne zjawiska NullPointerExceptions. (aosp/1763445, aosp/1758105, b/192677711)
  • Rozwiązaliśmy problemy ze zrzutami czasu działania, które powodowały java.lang.IllegalStateException: Reading a state that was created after the snapshot was taken or in a snapshot that has not yet been applied awarie. (b/193006595, b/192570897)

Wersja 1.0.0-rc01

1 lipca 2021 r.

Usługa androidx.compose.runtime:runtime-*:1.0.0-rc01 została zwolniona. Wersja 1.0.0-rc01 zawiera te zatwierdzenia.

Wersja 1.0.0-beta09

16 czerwca 2021 r.

Usługa androidx.compose.runtime:runtime-*:1.0.0-beta09 została zwolniona. Wersja 1.0.0-beta09 zawiera te zatwierdzenia.

Dodane reguły profilu

Ta wersja dodaje reguły profilu do następujących modułów tworzenia wiadomości (I14ed6):

  • androidx.compose.animation,
  • androidx.compose.animation-core,
  • androidx.compose.foundation
  • androidx.compose.foundation-layout
  • androidx.compose.material,
  • androidx.compose.material-ripple,
  • androidx.compose.runtime,
  • androidx.compose.ui,
  • androidx.compose.ui.geometry,
  • androidx.compose.ui.graphics,
  • androidx.compose.ui.tekst
  • androidx.compose.ui.tekst
  • androidx.compose.ui.jednostka
  • androidx.compose.ui.util,

Co to są reguły profilu?

  • Reguły profilu dla biblioteki określa się w pliku tekstowym baseline-prof.txt znajdującym się w katalogu src/main lub podobnym. Plik określa regułę w każdym wierszu, gdzie reguła w tym przypadku jest wzorcem dopasowywania do metod lub klas w bibliotece. Składnia tych reguł jest elementem nadrzędnym w przypadku czytelnego dla człowieka formatu profilu ART, który jest używany, gdy używasz adb shell profman --dump-classes-and-methods .... Reguły te mogą kierować reklamy na metody lub klasy w jednej z dwóch form.

  • Reguła metody będzie miała następujący wzorzec:

    <FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
    
  • Reguła klasy będzie miała następujący wzorzec:

    <CLASS_DESCRIPTOR>
    
  • <FLAGS> to co najmniej jeden ze znaków H, S i P wskazujących, czy ta metoda ma być oznaczona jako „Przebojowa”, „Uruchomienie” lub „Po uruchomieniu”.

  • <CLASS_DESCRIPTOR> to deskryptor klasy, do której należy wybrana metoda. Na przykład klasa androidx.compose.runtime.SlotTable miałaby deskryptor Landroidx/compose/runtime/SlotTable;.

  • <METHOD_SIGNATURE> to podpis metody. Zawiera nazwę, typy parametrów i typy zwracanych metod. Na przykład metoda fun isPlaced(): Boolean w LayoutNode ma podpis isPlaced()Z.

  • Aby jedna reguła obejmowała wiele metod lub klas, mogą one zawierać symbole wieloznaczne (**, * i ?).

Do czego służą reguły?

  • Metoda z flagą H wskazuje, że jest to metoda „hot” i należy ją skompilować wcześniej.

  • Metoda z flagą S wskazuje, że jest ona wywoływana przy uruchamianiu i należy ją skompilować z wyprzedzeniem, by uniknąć kosztów kompilacji i interpretacji podczas uruchamiania.

  • Metoda z flagą P wskazuje, że jest to metoda, która jest wywoływana po uruchomieniu.

  • Klasa znajdująca się w tym pliku wskazuje, że jest używana podczas uruchamiania i powinna być wstępnie przydzielona na stercie, aby uniknąć kosztów wczytywania klasy.

Jak to działa?

  • Biblioteki mogą definiować reguły, które będą spakowane w artefaktach AAR. Kiedy powstaje aplikacja, która zawiera te artefakty, reguły te są łączone ze sobą, a scalone reguły służą do utworzenia kompaktowego binarnego profilu ART, który jest charakterystyczny dla aplikacji. ART może następnie wykorzystać ten profil, gdy aplikacja jest instalowana na urządzeniach, w celu z wyprzedzeniem skompilowania określonego podzbioru aplikacji w celu zwiększenia jej wydajności, zwłaszcza przy pierwszym uruchomieniu. Pamiętaj, że nie będzie to miało wpływu na aplikacje z możliwością debugowania.

Wersja 1.0.0-beta08

2 czerwca 2021 r.

Usługa androidx.compose.runtime:runtime-*:1.0.0-beta08 została zwolniona. Wersja 1.0.0-beta08 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • State<T> to teraz State<out T> (I69049)
  • ControlledComposition – zmiana w interfejsie API umożliwiająca ponowne kompilowanie zmian w ramach ponownego tworzenia pojedynczej karty. (Iaafd1, b/184173932)

Wersja 1.0.0-beta07

18 maja 2021 r.

Usługa androidx.compose.runtime:runtime-*:1.0.0-beta07 została zwolniona. Wersja 1.0.0-beta07 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Dodaliśmy nowe interfejsy API kompilatora, które pozwalają usunąć wygenerowane przez niego informacje o źródle podczas jego minifikacji. (Ia34e6).
  • Wprowadzamy funkcję ReusableContent, która będzie próbować ponownie wykorzystać węzły w swojej treści, zamiast je zastępować po zmianie klucza. Po zmianie klucza poprzednie wartości w tabeli przedziałów dla treści są ignorowane z wyjątkiem wygenerowanych węzłów i wartości używanych do zaktualizowania węzłów.

    Wprowadza funkcję ReusableComposeNode, która będzie ponownie wykorzystywać utworzony węzeł zamiast zastępować go jak w przypadku ComposeNode. (I1dd86)

  • @ComposeCompilerApi nie jest już @RequiresOptIn (Iab690)

Poprawki błędów

  • LazyColumn/Row będzie teraz przechowywać do 2 wcześniej widocznych elementów aktywnych (nieusuniętych), nawet jeśli zostały już przewinięte. Dzięki temu komponent może ponownie korzystać z aktywnych kompozycji podrzędnych, gdy trzeba będzie utworzyć nowy element, który usprawnia przewijanie. (IE5555)

Wersja 1.0.0-beta06

5 maja 2021 roku

Usługa androidx.compose.runtime:runtime-*:1.0.0-beta06 została zwolniona. Wersja 1.0.0-beta06 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • @ComposeCompilerApi nie jest już @RequiresOptIn (Iab690)

Wersja 1.0.0-beta05

21 kwietnia 2021 r.

Usługa androidx.compose.runtime:runtime-*:1.0.0-beta05 została zwolniona. Wersja 1.0.0-beta05 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Usunięto @InternalComposeApi w przypadku rejestrowania odczytów i zapisów zrzutów (Id134d)

Poprawki błędów

  • Pliki AndroidManifest z ui-test-manifest i ui-tooling-data są teraz zgodne z Androidem 12 (I6f9de, b/184718994)

Wersja 1.0.0-beta04

7 kwietnia 2021 r.

Usługa androidx.compose.runtime:runtime-*:1.0.0-beta04 została zwolniona. Wersja 1.0.0-beta04 zawiera te zatwierdzenia.

Poprawki błędów

  • Przed tą zmianą można było pomijać lokalne funkcje kompozycyjne na podstawie ich parametrów. Po tej zmianie żadne lokalne funkcje kompozycyjne nie zostaną pominięte. Jest to powszechna i oczekiwana sytuacja, w której funkcje lokalne przechwytują parametry z elementu nadrzędnego, a ich pomijanie jest częstym źródłem błędów.

    Oto przykład:

    @Composable fun Counter(count: Int, onCountChange: (Int) -> Unit) {
      @Composable fun ShowCount() { Text("Count: $count") }
      ShowCount()
      Button( onCountChange(count + 1) }) {
        Text("Increment")
      }
    }
    

    Przed tą zmianą funkcja kompozycyjna ShowCount zawsze była pomijana, nawet po zaktualizowaniu parametru count. Ta informacja jest nieaktualna. (I5648a)

  • Rozwiązaliśmy problem, który powodował, że usługa rememberSaveable() przywracała starą wartość w przypadku używania z parametrami wejściowymi (I1b110, b/182403380)

Wersja 1.0.0-beta03

24 marca 2021 r.

Usługa androidx.compose.runtime:runtime-*:1.0.0-beta03 została zwolniona. Wersja 1.0.0-beta03 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Interfejs DefaultMonotonicFrameClock został wycofany. Wywołanie withFrameNanos lub Recomposer.runRecomposeAndApplyChanges bez numeru MonotonicFrameClock spowoduje zgłoszenie IllegalStateException. (I4eb0d).

Wersja 1.0.0-beta02

10 marca 2021 r.

Usługa androidx.compose.runtime:runtime-*:1.0.0-beta02 została zwolniona. Wersja 1.0.0-beta02 zawiera te zatwierdzenia.

Poprawki błędów

  • Egzekwuj ograniczenia dotyczące publicznego korzystania z eksperymentalnych interfejsów API (I6aa29, b/174531520)
  • Usunięto problem z uszkodzonym kodem rememberSaveable { mutableStateOf(0) } występującym w miejscu docelowym w nawigacji. (I1312b, b/180042685, b/180701630)

Wersja 1.0.0-beta01

24 lutego 2021 r.

Usługa androidx.compose.runtime:runtime-*:1.0.0-beta01 została zwolniona. Wersja 1.0.0-beta01 zawiera te zatwierdzenia.

To jest pierwsza wersja beta Compose 1.0.0.

Zmiany interfejsu API

  • Dodaj eksperymentalny interfejs API Recomposer.runRecomposeConcurrentlyAndApplyChanges do ponownego komponowania unieważnionych kompozycji poza pętlą ramki głównej. (I342d0)
  • Wszystkie elementy kompozycyjne oznaczone symbolem @ReadOnlyComposable są teraz sprawdzane podczas kompilacji podczas kompilowania, aby zagwarantować, że wywołują wyłącznie inne elementy @ReadOnlyComposables (I58961)
  • Pole defaultFactory dla obiektów compositionLocalOf i staticCompositionLocalOf jest teraz wymagane, a nie opcjonalne.

    Ta zmiana usuwa potencjalny błąd typu w przypadku typów niedopuszczających wartości null, w których nie podano domyślnej wartości fabrycznej. Wcześniej w przypadku typu niedopuszczającego wartości null konieczne było odniesienie do wartości null.

    W przypadku typów dopuszczających wartości null domyślną wartością fabryczną jest { null }.

    Nie zalecamy używania zasobów lokalnych z typami niezawierającymi wartości null, chyba że można podać rozsądną wartość domyślną. Jeśli nie istnieje rozsądne ustawienie domyślne, funkcja lambda defaultFactory powinna zgłosić wyjątek. Zwrócenie wyjątku oznacza jednak, że konsumenci z okolicy są w bezpośrednim stopniu uzależnieni od jego zapewnienia, a system typów nie jest egzekwowany. (Ifbd2a).

  • Wycofane symbole zostały usunięte ze środowiska wykonawczego tworzenia (I3252c)

  • Wycofana reguła emptyContent() została usunięta. Użyj w zamian zasady {}. (Idb33f, b/179432510)

  • Nazwa dostawców została zmieniona na CompositionLocalProvider

    • Konstruktor Kompozycja nie akceptuje już kluczowego parametru i został wycofany.
    • Parametr currentCompositeKeyHash został przekształcony w kompozycyjną właściwość najwyższego poziomu zamiast funkcji kompozycyjnej najwyższego poziomu.
    • CompositionData i CompositionGroup zostały przeniesione do przestrzeni nazw androidx.compose.runtime.tooling.
    • Interfejs ComposableLambda został utworzony zamiast konkretnej klasy i nie ma już parametrów typu.
    • Interfejs ComposableLambdaN został utworzony zamiast konkretnej klasy i nie ma już parametrów typu.
    • Funkcja snapshotFlow została przeniesiona do przestrzeni nazw androidx.compose.runtime
    • metoda scalania zasady SnapshotMutationPolicy nie jest już eksperymentalna
    • Funkcja @TestOnly najwyższego poziomu clearRoots została usunięta. Już nie jest to konieczne.
    • Funkcje keySourceInfoOf i resetSourceInfo zostały usunięte. Nie są już potrzebne.
    • Element Composer.collectKeySourceInformation został usunięty. Już nie jest to konieczne.
    • Metody isJoinedKey, JoinKeyLeft i joinKeyRight zostały usunięte. Nie są już potrzebne.
    • Różne interfejsy API najwyższego poziomu zostały przeniesione i porządkowane w różne pliki. Ze względu na semantykę klas plików Kotlin spowoduje to naruszenie zgodności plików binarnych, ale nie źródła, więc nie powinno stanowić problemu dla większości użytkowników.
    • (I99b7d, b/177245490)
  • SnapshotStateObserver nie jest już funkcją eksperymentalną (Id2e6a)

  • usunęliśmy niektóre wycofane wcześniej interfejsy API (Ice5da, b/178633932),

  • W interfejsie Material API wprowadzono te zmiany:

    • Do górnego/dolnego paska aplikacji dodano parametr contentPadding, aby umożliwić dostosowanie domyślnego dopełnienia.
    • Zmieniono kolejność parametrów w TleDScaffold, aby zachować zgodność z wytycznymi interfejsu API dotyczącymi parametrów, które powinny znajdować się przed parametrami opcjonalnymi.
    • Parametr icon w elemencie bottomNavigationItem został przeniesiony za selected i onClick.
    • Nazwa parametru alwaysShowLabels w elemencie bottomNavigationItem została zmieniona na alwaysShowLabel.
    • Zmieniono nazwę parametrów bodyContent niektórych komponentów na content.
    • Zmieniono kolejność parametrów w kolumnie ButtonDefaults.buttonColors(). Należy pamiętać, że ze względu na to, że typ parametrów nie uległ zmianie, nie spowoduje to błędu w kodzie. Upewnij się, że używasz parametrów nazwanych lub ręcznie zaktualizujesz kolejność. W przeciwnym razie kod nie będzie działać tak samo jak poprzednio.
    • Do grupy reklam darkColors() dodano parametr secondaryVariant. Ten kolor jest zwykle taki sam jak kolor secondary w ciemnym motywie, ale zapewnia spójność i dodatkowe możliwości dostosowania.
    • Usunięto klasę ElevationDefaults i animmateElevation() z publicznej platformy interfejsu API, ponieważ nie były one powszechnie używane ani przydatne.
    • Zmieniono nazwę onValueChangeEnd w Slider na onValueChangeFinished i ustawiłem ją na wartość null.
    • Nazwa parametru text w komórce Snackbar została zmieniona na content w celu zachowania spójności.
    • Dodano parametr contentPadding do elementu DropdownMenuItem, aby umożliwić dostosowanie domyślnego dopełnienia, oraz ustawienie content jako rozszerzenia w witrynie RowScope.
    • Nazwa ModalDrawerLayout została zmieniona na ModalDrawer.
    • Nazwa BottomDrawerLayout została zmieniona na BottomDrawer.
    • (I1cc66).

Wersja 1.0.0-alfa12

10 lutego 2021 r.

Usługa androidx.compose.runtime:runtime-*:1.0.0-alpha12 została zwolniona. Wersja 1.0.0-alfa12 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Usunięto obsługę grup widoków danych z UiApplier. Wycofane elementy kompozycyjne emitView zostały usunięte. (Ifb214).
  • Zmieniono nazwę CompositionReference na CompositionContext (I53fcb).
  • Element KomponentActivity.setContent został przeniesiony do folderu androidx.activity.compose.setContent w module androidx.activity:activity-compose. (Icf416).
  • Zaktualizowaliśmy interfejs Snapshot API, aby zwiększyć spójność z wytycznymi dotyczącymi interfejsu API oraz ukryć wewnętrzne klasy implementacji w publicznym interfejsie API. (Id9e32)
  • Zmieniono nazwy Ambientów, aby pasowały do nazwy Ambient -> CompositionLocal. Lokalizatory nosiły wcześniej nazwę AmbientFoo, a teraz CompositionLocals – LocalFoo. (I2d55d)
  • Zmieniono nazwę Ambient na CompositionLocal i Ambient of / staticAmbientOf odpowiednio na buildLocalOf / staticCompositionLocalOf. Dzięki tej zmianie staje się on bardziej jasny dla celu użycia funkcji CompositionLocal, czyli mechanizmu podawania / pobierania wartości lokalnych dla kompozycji. Instancje CompositionLocal powinny być poprzedzone ciągiem Local, na przykład val LocalFoo = buildLocalOf { Foo() }. (Ia55b6)
  • Metody getMutableSnapshot i TakeSnapshot stały się teraz metodami towarzyszącymi Snapshot. (I91f19)
  • Funkcja @ComposableContract została wycofana i zastąpiona 3 bardziej szczegółowymi adnotacjami.

    @ComposableContract(restartable = false) jest teraz @NonRestartableComposable @ComposableContract(readonly = true) jest teraz @ReadOnlyComposable @ComposableContract(preventCapture = true) został usunięty z @DisallowComposableCalls adresu @ComposableContract(tracked = true) został usunięty. (I60a9D)

  • Narzędzia emptyContent() i (@Composable () -> Unit).orEmpty() zostały wycofane, ponieważ nie mają już one pozytywnego wpływu na wydajność ani wartość (I0484d)

  • Parametry snapshotFlow i withMutableSnapshot nie są już eksperymentalne (I6a45f)

  • Rekompozycje można teraz zamknąć. Zamknięte rekompozytory będą kontynuować ponowne komponowanie, dopóki nie zakończą się uzupełniające podrzędne kompozycje. Nazwa polecenia Recomposer.shutDown została zmieniona na anulowanie, aby kontrastować z zamknięciem. (IB6d76)

  • Artefakt compose:runtime-dispatch został wycofany. MonotonicFrameClock znajdziesz teraz w polecenia compose:runtime, a AndroidUiDispatcher – w compose:ui. (IB5c36)

  • Interfejs API, na który kierowana jest wtyczka kompilatora Compose, został przekonwertowany tak, aby wykorzystywał interfejs zamiast konkretnej klasy. Interfejs nie używa już parametru type.

    To zmiana wewnętrzna, która nie powinna wpływać na zgodność kodu źródłowego, ale jest zmianą binarnej. (I3b922, b/169406779)

  • Wprowadzono SnapshotMutableState (Icfd03)

  • Nazwa DisposableEffectDisposable została zmieniona na DisposaleEffectResult (Ica7c6).

  • Usunięto element Recomposer.current(). [Abstract]ComposeView teraz domyślnie to stworzone leniwie, ograniczone do okna Rekompozycje, którymi zarządza ViewTreeLifecycleOwner dla okna. Rekompozycja i animacje z FrameNanos są wstrzymywane na czas zatrzymania cyklu życia hosta. (I38e11)

  • Funkcja Recomposer.runningRecomposers udostępnia teraz globalny przepływ StateFlow tylko do odczytu RecomposerInfo, który umożliwia obserwację bieżącego stanu kompozycji w trakcie tego procesu. Preferuj ten interfejs API przy użyciu interfejsu Recomposer.current(), który jest teraz wycofany. (If8ebe).

  • Nazwa DisposableEffectDisposable została zmieniona na DisposaleEffectResult (I3ea68).

Wersja 1.0.0-alfa11

28 stycznia 2021 roku

Usługa androidx.compose.runtime:runtime-*:1.0.0-alpha11 została zwolniona. Wersja 1.0.0-alfa11 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Interfejsy onCommit, onDispose i onActive zostały wycofane i zastąpione interfejsami SideEffect i DiposableEffect (If760e).
  • Interfejs emit() API i wszystkie przeciążenia zostały wycofane i mają nazwę ComposeNode. Interfejsy API są identyczne, ale mają inną nazwę, aby zachować zgodność z konwencjami nazewnictwa stosowanymi w funkcji tworzenia wiadomości (I4137b).
  • Nieprawidłowo i kompozytoryzacja() zostały wycofane. Zastąpiono je odpowiednio recomposeScope i ReminderCompositionReference. (I583a8)
  • PamiętajObserver, która zastąpiła funkcję CompositionLifecycleObserver, a zasada CompositionLifecycleObserver została wycofana.

    Metoda RememberObserver zastępuje metodę CompositionLifecycleObserver ze zmodyfikowaną semantyką i nowymi nazwami. Zmiana na nowy interfejs API można wprowadzić mechanicznie w przypadku obiektów, które są zapamiętane tylko raz, co jest i nadal jest zalecane. Jeśli jednak odniesienie w kompozycji zostało zapamiętane więcej niż raz, funkcja onRemembered jest wywoływana dla każdego odwołania, w którym element onEnter jest wywoływany tylko raz. Funkcja onEnter była wywoływana wiele razy, jeśli obiekt był używany w podkompozycjach, np. WithConstraints i Scaffold sprawiły, że gwarancja pojedynczego wywołania onEnter była zawodna i został usunięty dla RememberObserver.

    RememberObserver dodaje element onAbandoned, który jest wywoływany, jeśli wystąpienie RememberObserver jest zwracane z wywołania zwrotnego przekazanego do remember, ale nie jest zapamiętywane w stanie kompozycji i dlatego nigdy nie zostanie wywołane przez onRemembered. Może się tak zdarzyć, jeśli wyjątek kończy kompozycję przed ukończeniem lub gdy kompozycja została odrzucona, ponieważ stan produkował kompozycję, która nie jest już aktualna lub nie jest już potrzebna. Jeśli instancja RememberObserver zgodnie z powyższą rekomendacją dotyczącą referencji śledzi zasób zewnętrzny (zarówno onForgotten, jak i onAbandoned), oznacza to, że zasób nie jest już potrzebny. Jeśli obiekt śledzi rozpoczęte prace lub zasoby przydzielone w onRemembered, obiekt onAbandoned może zostać zignorowany, ponieważ nie będzie wywoływany po wywołaniu funkcji onRemembered. (I02c36)

  • Nie oznaczaj funkcji collectAsState() jako wbudowanych (Ia73e4)

Poprawki błędów

  • Element WithConstraints został przetworzony pod nazwą BoxWithConstraints i przeniesiony do pliku Foundation.layout. (I9420b, b/173387208)
  • Wykorzystanie narzędzia TestCoroutineDispatcher w testowaniu (I532b6)

Wersja 1.0.0-alpha10

13 stycznia 2021 r.

Usługa androidx.compose.runtime:runtime-*:1.0.0-alpha10 została zwolniona. Wersja 1.0.0-alfa10 zawiera te zatwierdzenia.

Zmiana niezbędna

  • Zmiana struktury wewnętrznego interfejsu API kompilatora umożliwia grupowanie zmian w węzłach wygenerowanych w wyniku kompozycji do fazy „wprowadzania zmian” po zakończeniu wszystkich funkcji @Composable.

    Jest to niezgodna z działaniem zmiana, która może mieć wpływ na kod aplikacji, ponieważ węzły nie są już dostępne z wewnętrznych i eksperymentalnych interfejsów API do czasu zastosowania zmian. Zwykle można to obejść, umieszczając kod z takimi zależnościami w kompozycji SideEffect, aby opóźnić wykonanie kodu do momentu utworzenia i zainicjowania węzłów. (I018da)

Zmiany interfejsu API

  • Dodaliśmy sposób śledzenia, czy redaktor zastosował zmiany. (I1b3e2).
  • Rozwiń interfejsy API ComposeView, aby umożliwić recykling widoków opartych na ComposeView i usuwanie ich kompozycji w celu późniejszego odtworzenia. Dodaj interfejsy API umożliwiające instalowanie i wykrywanie zasobów Rekompozytorów ograniczonych do okna oraz obiektów CompositionReferences do tworzenia kompozycji podrzędnych.

    Dodano funkcję ViewCompositionStrategy, która pozwala skonfigurować strategię usuwania kompozycji w obiektach [Abstract]ComposeViews. Domyślnym działaniem jest usuwanie po odłączeniu okna. (I860ab)

Poprawki błędów

  • Rekompozytor udostępnia teraz przepływ w bieżącym stanie, co pozwala monitorować jego aktywność i aktywność powiązanych efektów. (Ifb2b9).
  • Dostęp do natywnego zdarzenia keyEvent można teraz uzyskać przez keyEvent.nativeKeyEvent (I87c57, b/173086397)

Wersja 1.0.0-alpha09

16 grudnia 2020 roku

Usługa androidx.compose.runtime:runtime-*:1.0.0-alpha09 została zwolniona. Wersja 1.0.0-alfa09 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Usunięto interfejsy SlotTable, SlotReader i SlotWriter z publicznego interfejsu API. Wcześniej były one oznaczone jako InternalComposeAPI. Teraz są one wewnętrzne w module tworzenia wiadomości.

    Interfejsy CompositionData i CompositionGroup zostały dodane jako zamiennik interfejsu ui-tooling API, którego można używać do wyodrębniania informacji o kompozycji. Są one publiczne, ale nie są przeznaczone do stosowania poza interfejsem ui-tooling API, ponieważ dostarczają nieprzetworzone informacje interpretowane przez interfejs ui-tooling API (I31a9c)

  • Klasa aplikacji nie jest już uważana za (Id85b0)

  • Interfejs Applier został zmieniony, aby uprościć tworzenie drzew w widoku od dołu, a nie od góry.

    Nazwa metody insert() została zmieniona na insertTopDown().

    Dodano nową metodę: insertBottomUp().

    Stosuje on węzły do edytowanego drzewa przy użyciu funkcji insertTopDown() lub insertBottomUp(), w zależności od tego, co sprawdza się lepiej.

    Niektóre drzewa, np. LayoutNode i View, są znacznie efektywniejsze w budowaniu od dołu niż od góry. Przed tą zmianą trzeba było wdrożyć od dołu stos wkładek, który trzeba było kopiować do każdego narzędzia, które wymagało oddolnej struktury w celu zwiększenia skuteczności. W przypadku tej zmiany właściwość Applier zastępuje zasadę insertBottomUp(), aby utworzyć drzewo od dołu do góry, i zastąpienie insertTopDown(), aby utworzyć drzewo od dołu. (Icbdc2)

  • Funkcja tworzenia obsługuje moduły pobierania właściwości, które mogą tworzyć wywołania kompozycyjne. Ta funkcja nie będzie już obsługiwana, ale zmienia się składnia deklarowania metody pobierania właściwości jako typu @Composable.

    Wycofana składnia służąca do tego celu polegała na dodaniu adnotacji do samej właściwości:

        @Composable val someProperty: Int get() = ...
    

    Prawidłową składnią, aby to zrobić, jest dodanie adnotacji do metody getter właściwości:

       val someProperty: Int @Composable get() = ...
    

    Obie składni będą działać przez jakiś czas, ale poprzednia wycofana składnia stanie się w końcu błędem kompilacji. (Id9197).

Poprawki błędów

  • AndroidOwner jest wewnętrzny (Ibcad0, b/170296980)
  • Parametr subcomposeInto(LayoutNode) został zmieniony na wewnętrzny (Id724a)

Wersja 1.0.0-alpha08

Grudzień 2, 2020

Usługa androidx.compose.runtime:runtime-*:1.0.0-alpha08 została zwolniona. Wersja 1.0.0-alfa08 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Dodano sprawdzanie nazw i pozycji parametrów kompozycyjnych lambda w celu sprawdzenia spójności z wytycznymi dotyczącymi tworzenia wiadomości. Zgodnie ze sprawdzaniem lintowania i wskazówkami przenieśliśmy też niektóre interfejsy API z użyciem nazwy children jako nazwy końcowej lambdy do content. (Iec48e).
  • Rekompozytor nie akceptuje już klasy EmbeddingContext. Wymagane zależności harmonogramu są pobierane z programu EffectsCoroutineContext. Interfejs FrameManager został wycofany. Integracje z platformą powinny zainicjować własną globalną obsługę zrzutów. (I02369)
  • Nazwa funkcji RestorableStateHolder.withRestorableState została zmieniona na RestorableStateProvider (I66640).

Poprawki błędów

  • Wycofany komponent Ambient został wycofany z sufiksem Ambient i zastąpił je nowymi właściwościami z prefiksem Ambient zgodnie z innymi wytycznymi dotyczącymi interfejsu Ambients i Compose API. (I33440)
  • Usuń stary moduł testowania interfejsu i jego złącza (I3a7cb)

Wersja 1.0.0-alpha07

11 listopada 2020 roku

Usługa androidx.compose.runtime:runtime-*:1.0.0-alpha07 została zwolniona. Wersja 1.0.0-alfa07 zawiera te zatwierdzenia.

Nowe funkcje

Zmiany interfejsu API

  • Adnotacja @UnionType została wycofana (I57cde)
  • Jako alternatywy dla określania ustawień otoczenia dodano metodę ProvideDefault jako alternatywę dla określania otoczenia. Za jej pomocą można określać wartości otoczenia, które będą ustawiane tylko wtedy, gdy nie została jeszcze podana żadna wartość otoczenia. (Id6635, b/171024925)
  • Nazwa LaunchedTask została zmieniona na LaunchedEffect, aby zachować spójność z interfejsami API SideEffect i DiposableEffect. Aby zachęcić do stosowania sprawdzonych metod, metoda LaunchedEffect bez parametrów tematu jest niedozwolona. (Ifd3d4).
  • Stosujący ma teraz wywołania zwrotne onPoczątekChanges/onEndChanges, które są wywoływane po rozpoczęciu/zakończeniu stosowania zmian w drzewie przez usługę Composer. W razie potrzeby mogą one służyć do zarządzania zasobami wsadowymi. (Icf476).
  • Funkcja rekompozycji wymaga teraz CoroutineContext podczas budowy (Ic4610)
  • Zmiany w wewnętrznej implementacji SlotTable, które nie powinny mieć wpływu na publiczny interfejs API. (If9828).
  • Usunięto wycofane adaptery rxjava2, które nie przyjmują wartości początkowej (Idb72f).

Poprawki błędów

  • Foundation.Text została wycofana i zastąpiona materiałem material.Text. Informacje o podstawowym, nieopiniowanym interfejsie API tekstowym, który nie przetwarza wartości z motywu, znajdziesz na stronie androidx.compose.foundation.BasicText. (If64cb).
  • Pole BaseTextField zostało wycofane. Użyj w zamian pola BasicTextField. (I896eb)
  • Kilka symboli związanych z układem zostało przeniesionych z androidx.compose.ui do androidx.compose.layout.ui. (I0fa98, b/170475424)

Treści tłumaczone przez użytkowników zewnętrznych

  • Dodano moduł runtime-rxjava3 do tworzenia wiadomości. Podobne do runtime-rxjava2 (I02cbf)

Wersja 1.0.0-alpha06

28 października 2020 r.

Usługa androidx.compose.runtime:runtime-*:1.0.0-alpha06 została zwolniona. Wersja 1.0.0-alfa06 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Funkcja Rekompozytor jest teraz elementem CompositionReference oraz prawidłowym elementem nadrzędnym kompozycji. Bezpośrednie przekomponowanie jest teraz wymagane w mniejszej liczbie miejsc. (I4036f)
  • Dodano odpowiednik interfejsu DisposableEffect API do SideEffect. W ten sposób uzupełniliśmy rolę „onCommit-with-params”, ale tym, że wymagane jest ustawienie onDispose.
    • Dodano interfejs sendUpdatedState API służący do publikowania danych ze zmian kompozycji w procesach trwających lub długotrwałych, takich jak DisposableEffects czy LaunchedTasks.
    • (Id50b9).
  • MutableVector ma teraz funkcję RandomAccess (I85d73, b/170461551)
  • Dodano kompozycję SideEffect do stosowania efektów ubocznych kompozycji do obiektów zarządzanych przez kompozycję. SideEffect ma zastąpić funkcję kompozycyjną onCommit. (Ia77c2).
  • Nowa eksperymentalna api RestorableStateHolder. Umożliwia zapisanie stanu zdefiniowanego za pomocą parametrów [savedInstanceState] i [rememberSavedInstanceState] w drzewie podrzędnym przed jego usunięciem, co umożliwi jego ponowne utworzenie następnym razem z przywróconym stanem. (I66884, b/166586419)

Poprawki błędów

  • Włącz przejścia w ComposeTestRule. Usuń tę opcję, by włączyć migający kursor z reguły ComposeTestRule. (If0de3).

Wersja 1.0.0-alpha05

14 października 2020 r.

Usługa androidx.compose.runtime:runtime-*:1.0.0-alpha05 została zwolniona. Wersja 1.0.0-alfa05 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • eksperymentalny modyfikator zawieszenia danych wejściowych (Ia77d2),
  • Wydajność przewijania w przypadku LazyColumn/Row zwiększa się, ponieważ podczas każdego przewijania ma mniej pracy w subkompozycji. Do klasy kompozycji dodano nową metodę hasInvalidations(). Nazwa metody hasPendingChanges() z Recomposer została zmieniona na hasInvalidations() (Ib2f32, b/168293643, b/167972292, b/165028371)
  • Dodaj interfejs API ManufacturerState, który umożliwia uruchamianie współrzędnych z kompozycji, które aktualizują pojedynczą wartość State<T> w miarę upływu czasu (Id4a57).
  • updateInComposition zmieniona na LaunchedTask, by zapewnić zgodność z wytycznymi na temat interfejsu Compose API (I99a8e)
  • Kolejność wywołań funkcji Place() w układach niestandardowych określa teraz kolejność rysowania elementów podrzędnych (Ibc9f6).

Wersja 1.0.0-alpha04

1 października 2020 roku

Usługa androidx.compose.runtime:runtime-*:1.0.0-alpha04 została zwolniona. Wersja 1.0.0-alfa04 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Dodano element WłaścicielScope, aby umożliwić gromadzenie zakresów obserwacji układu i rysunków, gdy przestają one działać. (Ic4cf8).
  • Dodano interfejs devStateOf API, aby tworzyć obiekty stanu na podstawie obliczeń, które mogą odczytywać inne obiekty State (i z nich korzystać) – If758b.
  • Dodano interfejs TestOnly API dla SnapshotStateObserver (I6e2a9).

Poprawki błędów

  • Fundament.Box został wycofany. Zamiast niej użyj elementu Foundation.layout.Box. (IE5950, b/167680279)

Wersja 1.0.0-alpha03

16 września 2020 roku

Usługa androidx.compose.runtime:runtime-*:1.0.0-alpha03 została zwolniona. Wersja 1.0.0-alfa03 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • CompositionCoroutineScope nie stosuje już metody MonotonicFrameClock. Wywołujący metodę withFrameNanos powinni bezpośrednio zaimportować funkcję najwyższego poziomu. (Icb642, b/166778123)

Poprawki błędów

  • Funkcje testowania globalnego, takie jak onNode czy waitForIdle, zostały wycofane. Zacznij korzystać z ich nowych odpowiedników zdefiniowanych w ComposeTestRule (I7f45a).
  • launchInComposition nie uruchamia już nierozstrzygniętych kompetencji (Ief6af, b/166486000)

Wersja 1.0.0-alpha02

Wrzesień 2, 2020

Usługa androidx.compose.runtime:runtime-*:1.0.0-alpha02 została zwolniona. Wersja 1.0.0-alfa02 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Dodaj interfejsy API snapshotFlow i withMutableSnapshot, aby wykorzystywać i tworzyć zmiany w danych Snapshot. (I3e722)
  • Zmieniła się konwencja wywoływania funkcji kompozycyjnych. To jest zmiana binarna, która powoduje niezgodność. Wszystkie biblioteki muszą zostać ponownie skompilowane, aby działały z tą wersją wtyczki kompilatora kompilatora.

    Ta zmiana nie powoduje zmiany powodującej niezgodność na poziomie źródła, ponieważ jedynymi interfejsami API, które uległy zmianie, są interfejsy API kompilatora, dla których jednoznacznie wyraziła na to zgodę. (I7afd2, b/158123185)

  • Usunięto metody planowania z elementu EmbeddingContext (I7b9be).

  • Interfejs onPreCommit został wycofany. Działanie onCommit działa teraz w ten sposób.

    Metody onCommit i onActive działają teraz w tym samym ramce choreografa, w którym kompozycja została zmieniona, a nie na początku kolejnego kadru choreografa. (I70403).

Wersja 1.0.0-alpha01

26 sierpnia 2020 r.

Usługa androidx.compose.runtime:runtime-*:1.0.0-alpha01 została zwolniona. Wersja 1.0.0-alfa01 zawiera te zatwierdzenia.

Wersja 0.1.0-dev

Wersja 0.1.0-dev17

19 sierpnia 2020 r.

Usługa androidx.compose.runtime:runtime-*:0.1.0-dev17 została zwolniona. Wersja 0.1.0-dev17 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Niestandardowe źródła danych mogą teraz zadeklarować, że co najmniej 1 z nich można pominąć i ponownie skomponować niezależnie od emisji. (Ibbd13).
  • Usunięto wycofane wywołania FrameManager.

    Wewnętrzne interfejsy API tworzenia wiadomości zostały zmienione, aby zmniejszyć obciążenie związane ze śledzeniem obiektów stanu, takich jak mutableStateof() (I80ba6)

  • Funkcja kompozycyjna state { ... } została wycofana i zastąpiła jawne wywołania remember { mutableStateOf(...) }, aby zapewnić przejrzystość. Zmniejsza to ogólną powierzchnię interfejsu API i liczbę pojęć związanych z zarządzaniem stanem. Dopasowanie do wzorca by mutableStateOf() w przypadku przekazywania właściwości klas. (IA5727).

  • Flow.collectAsState zamiast domyślnego dyspozytora Dispatchers.Main określa jako domyślnego dyspozytora na podstawie samej kompozycji. (I9c1d9).

  • Awaria, gdy element zapisujący stan został naprawiony w pętli for. Teraz ten sam klucz jest dozwolony w tabeli savedInstanceState(), więc interfejs API UiSavedStateRegistry jest teraz dostosowany do tego nowego wymogu (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561).

Poprawki błędów

  • Interfejs emitView został wycofany. Jeśli to możliwe, do przesyłania wyświetleń w funkcji tworzenia wiadomości używaj zamiast tego AndroidView. Bezpośrednie tworzenie widoków i grup widoków nie będzie w przyszłości obsługiwane, chyba że będą one pozostawione w drzewie kompozycji (gdy będzie to możliwe w AndroidView). (I29b1e, b/163871221)

Wersja 0.1.0-dev16

5 sierpnia 2020 r.

Usługa androidx.compose.runtime:runtime-*:0.1.0-dev16 została zwolniona. Wersja 0.1.0-dev16 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Domyślna zasada mutacji mutableStateOf(), ambientOf() i savedInstanceStateOf() została zmieniona na structuralEqualityPolicy(), a nie na referentialEqualityPolicy().

    Ustawienie domyślne decydujące o tym, czy nowa wartość przypisana do instancji mutableStateOf() jest uznawana za zmianę, teraz domyślnie jest używana wartość ==, a nie ===.

    Więcej informacji znajdziesz na https://kotlinlang.org/docs/reference/equality.html

    ambientOf() i savedInstanceStateOf() używają w swoich implementacjach mutableStateOf(), więc zostały zmienione tak, aby były zgodne z zasadą mutableStateOf().

    Wykorzystanie równości strukturalnej jest ściślej zgodne z oczekiwaniami programistów.

    Na przykład

    val state = mutableStateOf(1f)
    

    , a po nim:

    state.value = 1f
    

    nie będą już uznawane za zmianę w state, a zastosowania elementu state podczas kompozycji nie trzeba będzie już tworzyć.

    Jest to zmiana powodująca niezgodność, ale w większości przypadków (np. gdy używasz klas, które nie zastępują equals()) nie będzie ona miała zauważalnego wpływu na aplikację.

    Klasy, które zastępują equals(), takie jak klasy data, mogą zauważyć spadek wydajności, ponieważ ich metody equals() są teraz domyślnie wywoływane po przypisaniu do mutableStateOf().

    Poprzednie działanie można przywrócić, dodając parametr zasady policy = referentialEqualityPolicy() do wywołań funkcji mutableStateOf(), ambientOf() i savedInstanceStateOf(). (IC21a7).

  • Row i Column są teraz funkcjami wbudowanymi, więc znacznie zmniejszają wymagania związane z ich używaniem. (I75c10)

Poprawki błędów

  • Metoda setViewContent została wycofana. Zamiast niej należy używać parametru setContent. (I7e497, b/160335130)
  • Dodano MonotonicFrameAnimationClock, który umożliwia użycie MonotonicFrameClock jako funkcji AnimationClockObservable w celu wypełnienia luki między nowymi zegarami opartymi na współprogramach a interfejsami API, które nadal używają starych zegarów opartych na wywołaniach zwrotnych.

    Odpowiednikiem MonotonicFrameClock elementu ManualAnimationClock jest teraz ManualFrameClock. (I111c7, b/161247083)

  • Modifier.stateDraggable został całkowicie przerobiony na Modifier.swipeable. Wprowadzono nową klasę PrzesuńableState, a elementy DrawerState i bottomDrawerState zostały zmodyfikowane tak, aby dziedziczyły z niej elementy. [Modal/bottom]DrawerLayout nie przyjmuje już parametru onStateChange. (I72332, b/148023068)

  • Interfejs Modifier.plus został wycofany. Użyj interfejsu Modifier.then. Pole „To” daje silniejszy sygnał określający kolejność, ale uniemożliwia też wpisanie słowa Modifier.padding().background() + anotherModifier, które przerywa łańcuch i jest trudniejsze do odczytania (Iedd58, b/161529964).

  • Element SubcomposeLayout został dodany. Jest to element podstawowy niskiego poziomu, który umożliwia tworzenie elementów podrzędnych podczas pomiaru, jeśli chcemy użyć niektórych wartości dostępnych dopiero później podczas pomiaru składu drzewa podrzędnego. Na przykład element WithConstraints nie jest implementowany za pomocą metody SubcomposeLayout. (I25cc8)

  • Nazwa pola Material FilledTextField została zmieniona na TextField, a podstawowy element TextField zmienił się na BaseTextField, by ułatwić znajdowanie i używanie najprostszego interfejsu API (Ia6242, b/155482676).

  • Nazwa Modifier.drawBackground została zmieniona na Modifier.background (I13677)

Wersja 0.1.0-dev15

22 lipca 2020 r.

Usługa androidx.compose.runtime:runtime-*:0.1.0-dev15 została zwolniona. Wersja 0.1.0-dev15 zawiera te zatwierdzenia.

Aktualizacja zależności

  • Aby używać funkcji Compose 0.1.0-dev15, musisz zaktualizować zależności zgodnie z nowymi fragmentami kodu pokazanymi powyżej w sekcji Deklarowanie zależności.

Zmiany interfejsu API

  • Adnotacja @Model została wycofana. Zamiast nich używaj parametrów state i mutableStateOf. Decyzja o wycofaniu została podjęta po bardzo wnikliwej dyskusji.

    Uzasadnienie

    Uzasadnienie obejmuje m.in.:

    • Skraca powierzchnię interfejsu API oraz koncepcje, których trzeba nauczać
    • ściślej pasuje do innych podobnych narzędzi (Swift UI, React, Flutter).
    • Decyzja odwracalna. Zawsze możemy później przywrócić użytkownika @Model.
    • Nie używa wielkich liter i nie wymaga odpowiedzi na pytania o konfigurację @Model jako rzeczy, którymi musimy się zająć.
    • Klasy danych: @Model, równa się, kod numeryczny itp.
    • Co zrobić, aby niektóre właściwości były „obserwowane”, a inne nie?
    • Jak określić równość strukturalną i referencyjną do zastosowania w obserwacji?
    • Ogranicza działanie „magii” działania systemu. Zmniejszyłoby prawdopodobieństwo, że ktoś zakłada, że system jest mądrzejszy niż jest (tj. wie, jak porównać listę)
    • Zwiększa szczegółowość obserwacji.
    • Poprawia refaktoryzację z zmiennej -> właściwości w klasie
    • Potencjalnie otwiera możliwości wprowadzenia ręcznych optymalizacji w kontekście poszczególnych stanów.
    • Jest ściślej dopasowany do reszty ekosystemu i ogranicza niejasności w odniesieniu do „stałego stanu” lub „akceptowania zmiennego stanu”.

    Uwagi dotyczące migracji

    Niemal wszystkie dotychczasowe sposoby korzystania z usługi @Model są dość proste w użyciu na jeden z 2 sposobów. Przykład poniżej zawiera klasę @Model z 2 właściwościami i jest używana w funkcji kompozycyjnej.

    @Model class Position(
     var x: Int,
     var y: Int
    )
    
    @Composable fun Example() {
     var p = remember { Position(0, 0) }
     PositionChanger(
       position=p,
        p.x = it }
        p.y = it }
     )
    }
    

    Opcja 1. Użyj elementu State<OriginalClass> i utwórz kopie.

    To podejście jest łatwiejsze dzięki klasom danych Kotlin. Ogólnie rzecz biorąc, przenieś wszystkie właściwości var do właściwości val klasy danych, a następnie użyj state zamiast remember i przypisz wartość State sklonowanym kopiom oryginału za pomocą wygodnej metody klasy danych copy(...).

    Pamiętaj, że to podejście działa tylko wtedy, gdy jedyne mutacje w danej klasie zostały wprowadzone w tym samym zakresie co instancja State. Jeśli klasa zmienia się wewnętrznie poza zakres użytkowania i polegasz na obserwowaniu tej zmiany, należy zastosować się do kolejnego podejścia.

    data class Position(
     val x: Int,
     val y: Int
    )
    
    @Composable fun Example() {
     var p by state { Position(0, 0) }
     PositionChanger(
       position=p,
        p = p.copy(x=it) }
        p = p.copy(y=it) }
     )
    }
    

    Opcja 2: użyj przedstawicieli mutableStateOf i właściwości

    Takie podejście jest łatwiejsze dzięki przedstawicielom właściwości Kotlina i interfejsowi API mutableStateOf, które umożliwia tworzenie instancji MutableState poza kompozycją. Ogólnie rzecz biorąc, zastąp wszystkie właściwości var pierwotnej klasy właściwościami var właściwościami mutableStateOf. Ta zaleta polega na tym, że sposób korzystania z klasy nie ulegnie zmianie, a jedynie jego wewnętrzna implementacja. Działanie nie jest jednak całkowicie takie samo jak w przypadku pierwotnego przykładu, ponieważ każda właściwość jest teraz obserwowana/zasubskrybowana osobno, więc zmiany widoczne po tym refaktoryzacji mogłyby być bardziej wąskie (to dobrze).

    class Position(x: Int, y: Int) {
     var x by mutableStateOf(x)
     var y by mutableStateOf(y)
    }
    
    // source of Example is identical to original
    @Composable fun Example() {
     var p = remember { Position(0, 0) }
     PositionChanger(
       position=p,
        p.x = it }
        p.y = it }
     )
    }
    

    (I409e8, b/152050010, b/146362815, b/146342522, b/143413369, b/135715219, b/925

  • Zmienia strategię generowania kodu w kompilatorze Compose. Przed tą zmianą kompilator komponował przekształcanie wywołań funkcji kompozycyjnych. W wyniku tej zmiany przekształcamy treść funkcji kompozycyjnej i zostajemy bez zmian (w większości przypadków).

    Oznacza to, że większość logiki komunikującej się ze środowiskiem wykonawczym tworzenia zachodzi na początku treści funkcji, a nie w lokalizacji wywołania.

    Powinna to być zmiana zgodną ze źródłem w przypadku całego korzystania z funkcji tworzenia wiadomości. W związku z tą zmianą większość użytkowników narzędzia do tworzenia wiadomości nie będzie musiała aktualizować żadnego kodu.

    Aby ułatwić ten proces, zmienił się podpis JVM wszystkich funkcji kompozycyjnych. Funkcja kompozycyjna akceptująca pojedynczy parametr jest przekształcana w funkcję akceptującą 3 parametry. Dodatkowe parametry to Composer, czyli liczba całkowita „klucz”, czyli liczba całkowita maska bitowa używana do rozpowszechniania metadanych za pomocą wywołań.

    Funkcja Utwórz przekształca teraz także domyślne argumenty w funkcję kompozycyjną. Odbywa się to bez dodatkowego syntetycznego przeciążenia samej funkcji, więc ta zmiana spowoduje zdefiniowanie mniejszej liczby funkcji.

    Znane, zamierzone zmiany w zachowaniu wynikające z tego:

    1. Niektóre rozmowy są pomijane tam, gdzie wcześniej nie były
    2. Wyrażenia kompozycyjne w domyślnych wyrażeniach argumentów są teraz prawidłowo subskrybowane i obsługiwane

    Wprowadziliśmy kilka optymalizacji: 1. Wyniki porównań parametrów są przekazywane na wykresie wywołań do innych funkcji kompozycyjnych. Zmniejszy to liczbę porównań w czasie działania, zmniejszy rozmiar tabeli przedziałów i będzie więcej pomijać funkcji kompozycyjnych, które nie były wcześniej pomijane2. Parametry, które podczas kompilacji zostaną uznane za „statyczne”, nie są już porównywane ani przechowywane w środowisku wykonawczym. Zmniejsza to liczbę porównań i rozmiar tabeli przedziałów. 3. Kontroluj strukturę przepływu treści funkcji do zminimalizowania liczby generowanych grup. Zmniejsza to rozmiar tabeli przedziałów i zmniejsza ilość pracy środowiska wykonawczego. 4. Nieużywane parametry dyspozytora i odbiorcy w funkcji nie są uwzględniane przy określaniu możliwości pominięcia funkcji, jeśli nie są one używane w jej treści.

    Większość zmian powodujących niezgodność dotyczy interfejsów API, na które kompilator jest kierowany bezpośrednio. Nie wpłynie to na typowe użycie funkcji tworzenia wiadomości: 1. Usunięto polecenie Composer::startExpr. 2. Narzędzie Composer::endExpr zostało usunięte. 3. Interfejs Composer::call został wycofany. 4. Przeciążenia inne niż różne (key) zostały usunięte. Od tej pory używaj wersji vararg. 5. Adnotacja przestawna została wycofana. Użyj key jako zamiennika. 6. ZakresUpdateScope::updateScope został zmieniony, tak aby obejmował funkcję Function3, a nie Function1. 7. Zaktualizowaliśmy funkcję restartableFunction i restartableFunctionN, aby uwzględnić dodatkowe parametry czasu kompilacji (I60756, b/143464846)

  • Do funkcji MutableVector dodano sortowanie z funkcjami sortWith i deleteRange (Icccf7).

  • Dodano domyślne implementacje metody dla CompositionLifecycleObserver (I24289).

  • Aktualizator wymaga teraz metody clear() do usuwania kompozycji (Ibe697)

  • Do funkcji MutableVector dodano funkcję asMutableList(), która umożliwia przekazywanie jej do publicznego interfejsu API bez konieczności kopiowania całej listy. (I298df)

  • Dodano funkcję loadCoroutineScope() w celu uzyskania w kompozycji zarządzanej funkcjiCoroutineScope do uruchamiania zadań w odpowiedzi na zdarzenia. (I0e264)

  • MutableVector to nowy zbiór, w którym nie ma żadnego standardowego interfejsu kolekcji. Ten zbiór zapewnia szybsze działanie niż inne wymagania i jest przeznaczony do użytku tylko wewnętrznie. (I8ebd6).

  • Tymczasowo usunięto StableMutableList i StableMutableMap, aby uniknąć problemu w wersji wymaganej do tworzenia wiadomości w Kotlin. Te interfejsy zostaną ponownie udostępnione po zaktualizowaniu narzędzia compose do wersji Kotlin, w której nie występuje ten problem.

    SnapshotStateList i SnapshotStateMap są teraz publiczne, ale zostaną wycofane po przywróceniu usług StableMutableList i StableMutableMap. (IA7769).

  • dodaj funkcję najwyższego poziomu withFrameNanos do czasu animacji (Ie34c5)

  • Adnotacja @Nieśledzona została wycofana. Zastąp @ComposableContract(tracked=false) (Id211e).

  • Nazwa funkcji RestartableFunction i powiązane z nią interfejsy API zostały np. zmienione na ComposableLambda. Te interfejsy API były kierowane tylko przez kompilator, więc nie powinno to normalnie wpływać na zgodność na poziomie źródła. Zmiana nazwy ma na celu przede wszystkim informowanie, co klasa jest lepsza, gdy pojawia się w zrzutach stosu (I7eb25).

  • Adnotacja @Composable nie jest już prawidłowa w klasach (Ia5f02).

  • Ambient<T> to teraz @Stable zamiast @Immutable (I0b4bb)

  • Przed tą zmianą wtyczka kompilatora kompilatora przechwytywała wywołania konstruktorów w funkcji @Composable, jeśli w funkcji @Composable występowało (I5205a, b/158123804).

  • Funkcja kompozycyjna „Przetwórz ponownie” nie jest już przydatną abstrakcją. Większość zmian kompozycji powinna następować w wyniku przypisań MutableState. W innych przypadkach zalecamy użycie funkcji invalidate do aktywowania przekomponowania bieżącego zakresu. (Ifc992).

  • Obserwacja nie jest już przydatna abstrakcja. Jeśli chcesz go zreplikować, możesz zreplikować jego implementację, tworząc funkcję kompozycyjną wykonującą parametr kompozycyjny lambda. Na przykład @Composable fun Observe(body: @Composable () -> Unit) = body() (I40d37).

  • Metoda @Direct została wycofana i zastąpiona przez @ComposableContract(restartable=false) (If4708).

  • Dodaliśmy adapter do niedawno wprowadzonego modelu StateFlow, który umożliwia wstępne wypełnienie wartości początkowej tak, aby zwracany stan nie miał wartości null (I61dd8, b/156233789).

  • Dodaliśmy adapter do Flow. Przykład użycia: wartość val przez Flow.collectAsState() (If2198, b/153375923)

  • [Mutable]Operatory delegowania właściwości stanu zostały przeniesione do rozszerzeń, aby obsługiwać optymalizację przekazywania właściwości Kotlin 1.4. Rozmówcy muszą dodać importowanie, aby dalej używać by state { ... } lub by mutableStateOf(...). (I5312C)

  • Aplikacja androidx.compose.ViewComposer została przeniesiona do androidx.ui.node.UiComposer. androidx.compose.Emittable została usunięta. W przypadku węzła KomponentNode to niepotrzebne narzędzie. Aplikacja androidx.compose.ViewAdapters została usunięta. Nie są już one obsługiwanym przypadkiem użycia. Interfejs Compose.composeInto został wycofany. Użyj interfejsu setContent lub setViewContent. Metoda Compose.disposeComposition została wycofana. Użyj metody dispose na obiekcie Composition zwróconym przez setContent. Nazwa androidx.compose.Compose.subcomposeInto została przeniesiona do androidx.ui.core.subcomposeInto. Nazwa węzła #emitInsertAt została zmieniona na KomponentNode

  • Flaga ComposeFlags.COMPOSER_PARAM została zmieniona na true, co zmieni strategię generowania kodu dla wtyczki do tworzenia wiadomości. Ogólnie powoduje to generowanie funkcji @Composable z dodatkowym parametrem syntetycznym, który jest przekazywany do kolejnych wywołań @Composable w celu prawidłowego zarządzania wykonaniem w środowisku wykonawczym. Jest to istotna zmiana polegająca na nieprawidłowym działaniu plików binarnych, jednak powinna ona zachować zgodność na poziomie źródła we wszystkich objętych sankcjami użycia funkcji tworzenia wiadomości. (I7971C)

  • Zmiany w interfejsie API nieaktywnym. Szczegóły znajdziesz w logu i dokumentacji Ambient<T> (I4c7ee, b/143769776)

  • Dodaliśmy ui-livedata – nowy artefakt z adapterem LiveData. Przykład zastosowania: wartość val by liveData.observeAsState() (Ie9e8c, b/150465596)

  • Adaptery Rx bez wyraźnej wartości początkowej są wycofane. Użycie wartości null nie zawsze jest najlepszym rozwiązaniem domyślnym. Na przykład jeśli masz listę, lepiej jest zacząć od metody emptyList() lub innej uzasadnionej wartości domyślnej (I00025, b/161348384).

  • Dodano ui-rxjava2 – nowy artefakt z adapterami do RxJava2. Przykład użycia: wartość wartości przez observable.subscribeAsState() (Ifab4b, b/153369097)

  • Interfejsu savedInstanceState() można teraz używać z typami dopuszczającymi wartości null (I6847f, b/153532190)

  • Nowe funkcje listSaver() i mapSaver() ułatwiające pisanie niestandardowych obiektów Save (I8cf68, b/152331508)

  • Nowe funkcje: savedInstanceState() i forgotSavedInstanceState(). Są one podobne do state() i Zapamiętaj(), ale mają wbudowaną obsługę zapisanych stanów instancji (If1987, b/152025209).

Poprawki błędów

  • Nazwa runOnIdleCompose została zmieniona na runOnIdle (I83607)
  • Made LayoutNode – eksperymentalny interfejs API (I4f2e9)
  • Metody androidx.ui.foundation.TextFieldValue i androidx.ui.input.EditorValue zostały wycofane. Obiekty kompozycyjne TextField, PhlledTextField i CoreTextField, które używają tego typu, również zostały wycofane. Użyj androidx.ui.input.TextFieldValue (I4066d, b/155211005)
  • Usunęliśmy wycofany interfejs DrawBackground API i zastąpienie go interfejsami API rozszerzenia DrawBackground w modyfikatorze. zmodyfikowano implementacje koloru, pędzla i malowania metodą PaintBackground, aby zmniejszyć ścieżki kodu, a także usunąć wymóg tworzenia modyfikatora w ramach kompozycji. (I0343a)
  • Zaktualizowano interfejsy API tworzenia wyższego poziomu, które udostępniają obiekt Canvas do wyświetlania obiektu CanvasScope. Dzięki temu konsumenci nie muszą utrzymywać własnych obiektów Paint. Klienci, którzy nadal potrzebują dostępu do obiektu Canvas, mogą skorzystać z metody rozszerzenia dropCanvas, która powoduje wywołanie zwrotne do poleceń rysowania na podstawie obiektu Canvas. (I80afd).
  • Zmieniono końcowy interfejs API WithConstraints lambda. Teraz zamiast 2 parametrów ma zakres odbiornika, który oprócz ograniczeń oraz właściwości layoutDirection zapewnia właściwości minWidth, maxWidth, minHeight i maxHeight w Dp (I91b9a, b/149979702)
  • Dodano symetryczny modyfikator dopełnienia. (I39840)
  • Zaktualizowaliśmy właściwości wrapContentWidth i wrapContentHeight tak, aby można było korzystać z wyrównania w pionie lub poziomie, a nie wyrównania w poziomie. Modyfikator grawitacji został zaktualizowany, aby przyjmował wyrównanie w pionie lub poziomie. Wiersze, kolumny i stos zostały zaktualizowane, aby obsługiwały niestandardowe ciągłe wyrównania. (IB0728)
  • Nazwa modułu ui-text została zmieniona na ui-text-core (I57dec).
  • Ulepsz interfejs DrawModifier API:
    • Zmieniono zakres odbiorcy dla metody Draw() ContentDrawScope
    • Usunięto wszystkie parametry z dresz()
    • Interfejs DrawScope jest taki sam jak poprzednia wersja CanvasScope
    • ContentDrawScope ma metodę DrawContent() (Ibaced, b/152919067)
  • Interfejs ColoredRect został wycofany. Użyj w zamian zasady Box(Modifier.preferredSize(width, height).drawBackground(color)). (I499fa, b/152753731)
  • Zastąpienie operatora modyfikatora plus funkcjami rozszerzeń fabrycznych (I225e4).
  • Elementy RowScope i ColumnScope są teraz dostępne poza elementami Wiersz i Kolumna. (I3a641)
  • Zmieniono nazwę Układ Elastyczny na Układ Weight. Zmieniono nazwę precyzyjnego parametru na wypełnienie. (If4738).
  • WithConstraints uzyskała parametr LayoutDirection (I6d6f7)
  • Zmieniono nazwę tła na DrawBackground i tak, by było domyślnie zapamiętywane (Ia0bd3)
  • Zastąpiliśmy ButtonStyle różnymi funkcjami i usunęliśmy przeciążenie tekstu (ciągami znaków). Informacje o wykorzystaniu znajdziesz w zaktualizowanych przykładach. (If63ab, b/146478620, b/146482131)
  • runOnIdleCompose i runOnUiThread to teraz funkcje globalne, a nie metody w ComposeTestRule. (Icbe8f).

Treści tłumaczone przez użytkowników zewnętrznych

  • Usuń z warstwy przenoszenia środowiska wykonawczego Compose (I6847d) niepotrzebne interfejsy API, takie jak Looper i Handler
  • Wycofano funkcję Flow<T>.collectAsState() bez wartości początkowej. Użyj funkcji StateFlow<T> lub przekaż konkretną wartość początkową. (I63f98, b/157674865)