Utwórz środowisko wykonawcze

Podstawowe elementy modelu programowania i zarządzania stanem w usłudze Compose, a także podstawowe środowisko wykonawcze, na które ma być kierowana wtyczka Compose Compiler.
Najnowsza aktualizacja Wersja stabilna Kandydat do publikacji Wersja Beta Wersja alfa
17 kwietnia 2024 r. 1.6.6 - - 1.7.0-alfa07

Struktura

Tworzenie stanowi połączenie 7 identyfikatorów grupy Maven w usłudze androidx. Każda grupa zawiera wybrany podzbiór funkcji z własnym zestawem informacji o wersjach.

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 zwiększyć wygodę użytkowników.
compose.buildr,Przekształć funkcje @Composable i włącz optymalizacje za pomocą wtyczki kompilatora Kotlin.
compose.foundationPisz aplikacje Jetpack Compose, korzystając z gotowych elementów składowych i rozszerzaj podstawy do tworzenia własnych elementów systemu.
compose.material,Twórz interfejsy użytkownika Jetpack Compose z gotowymi do użycia komponentami Material Design. Jest to punkt wejścia wyższego poziomu Compose, zaprojektowany z myślą o dostarczaniu komponentów pasujących do tych opisanych na stronie www.material.io.
compose.material3,Twórz interfejsy użytkownika Jetpack Compose za pomocą komponentów Material Design 3, czyli nowej ewolucji Material Design. Material 3 zawiera zaktualizowane motywy i komponenty oraz funkcje personalizacji Material You, takie jak dynamiczny kolor. Został zaprojektowany tak, aby zachować spójność z nowym stylem wizualnym i interfejsem systemu Androida 12.
compose.runtime,Podstawowe elementy modelu programowania i zarządzania stanem w usłudze Compose, a także podstawowe środowisko wykonawcze, na które ma być kierowana wtyczka Compose Compiler.
compose.ui;Podstawowe komponenty 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ść od 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.6"
    implementation "androidx.compose.runtime:runtime-livedata:1.6.6"
    implementation "androidx.compose.runtime:runtime-rxjava2:1.6.6"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.12"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

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

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.12"
    }

    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 znajdziesz nowe wydania lub masz pomysły na ulepszenie tej biblioteki. Zanim utworzysz nową bibliotekę, przejrzyj problemy z tą biblioteką. Możesz oddać głos w ramach istniejącego problemu, klikając przycisk gwiazdki.

Utwórz nowy numer

Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.

Śledzenie środowiska wykonawczego w wersji 1.0

Wersja 1.0.0-beta01

29 listopada 2023 r.

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

Wersja 1.0.0-alfa05

15 listopada 2023 r.

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

Poprawki błędów

  • Przypięto zależności do najniższych obsługiwanych stabilnych wersji (np.compose-runtime i tracing-perfetto). Naprawiono problem, który powodował, że funkcja śledzenia środowiska wykonawczego tworzenia prowadziła do nowszej wersji środowiska wykonawczego tworzenia wiadomości do aplikacji.

Wersja 1.0.0-alfa04

23 sierpnia 2023 r.

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

Nowe funkcje

  • Zgodne z najnowszymi wersjami testów porównawczych i śledzenia Perfetto, co umożliwia obsługę Composition Trackings podczas uruchamiania aplikacji (na zimno), np. w AndroidX Benchmark i Android Studio (od Hedgehog Beta 2).

Zmiany w interfejsie API

  • Nazwa elementu androidx.tracing.perfetto.Trace została zmieniona na androidx.tracing.perfetto.PerfettoSdkTrace. (I44af8)
  • Uzyskiwanie zgodności interfejsów Tracking Perfetto SDK API z android.os.Trace. (I73ba0, b/282199917)
  • Wymagania wstępne śledzenia przy uruchamianiu aplikacji. (Iad890)
  • Scalone pliki eksperymentalne i publiczne interfejsu API (I0f2e1, b/278769092)

Wersja 1.0.0-alfa02

8 lutego 2023 r.

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

Nowe funkcje

  • Bez zmian funkcjonalnych. Wiele optymalizacji wydajności w zależnościach na dalszych etapach: androidx.tracing:tracing-perfetto*.

Wersja 1.0.0-alfa01

7 września 2022 roku

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

Nowe funkcje

  • androidx.compose.runtime:runtime-tracing to biblioteka, która – dostępna w obecnej wersji obsługującej ją narzędzia – umożliwia rozszerzone śledzenie w aplikacji Compose. Ta początkowa wersja to 1.0.0-alfa01.

Wersja 1.7

Wersja 1.7.0-alfa07

17 kwietnia 2024 r.

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

Nowe funkcje

  • Dodano możliwość udostępniania lokalnej kompozycji, która jest obliczana na podstawie wartości innych kompozycji lokalnych kompozycji – domyślnie za pomocą funkcji compositionLocalWithComputedDefault() lub przez podanie funkcji lambda służącej do obliczenia wartości za pomocą funkcji providesComputed zamiast provides.
  • Wartość kompozycji lokalnej można uzyskać przy użyciu właściwości currentValue kompozycji dostępnej lokalnie z poziomu funkcji lambda obliczającej wartość. Jest on używany zamiast atrybutu current, który jest dostępny tylko w funkcjach @Composable. (Iadbc0)

Zmiany w interfejsie API

  • Nowo utworzone obiekty stanu są natychmiast dostępne z innych zrzutów, w tym zrzutu globalnego, w stanie początkowym. Wszelkie kolejne zmiany nie będą widoczne do czasu zastosowania zrzutu, w którym utworzono obiekt.
  • Stan początkowy obiektu mutableStateOf(), a także jego wersje podstawowe, to wartość przekazywana jako parametr do funkcji mutableStateOf(). Stan początkowy mutableStateListOf() i mutableStateMapOf() jest pusty.
  • Dodano Snapshot.isInSnapshot i Snapshot.PreexistingSnapshotId, które umożliwiają obiekt stanu obsługę natychmiastowego dostępu z globalnego zrzutu po jego utworzeniu.
  • Obiekty stanu niestandardowego mogą obsługiwać natychmiastowy dostęp, zgodnie ze wzorcem zmian wprowadzonych do wbudowanych obiektów zrzutu. (I84a17)

Poprawki błędów

  • Rozwiązaliśmy problem scalania danych readObserver w zagnieżdżonych zrzutach. W efekcie zagnieżdżone stany derywowane były nieważne, gdy zostały użyte w elemencie snapshotFlow. (Idf138).

Wersja 1.7.0-alfa06

3 kwietnia 2024 r.

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

Poprawki błędów

  • Podanie pojedynczych wartości w polu providesDefault (538f45)
  • Unikaj zakleszczenia w narzędziu Recomposer do uzyskiwania dostępu do zegara klatek (07e5c6)

Wersja 1.7.0-alfa05

20 marca 2024 r.

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

Poprawki błędów

  • Usuń opóźnione zmiany w dezaktywowanej kompozycji (5950 bc)

Wersja 1.7.0-alfa04

6 marca 2024 roku

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

Ulepszenia wydajności

  • Wywołaj metodę Snapshot.current raz na ocenę stanu derywowanego (ee7daf)
  • Odczytaj currentRecord raz na obserwację w kompozycji (b882b2)
  • Usuń przypadkowy przydział iteratora w: snapshotFlow (231e56)
  • Włącz nonSkippingGroupOptimization w bibliotekach tworzenia. Zwiększa to efektywność generowanego kodu dla wszystkich funkcji kompozycyjnych, których nie można ponownie uruchomić w Androidzie. W przyszłości planujemy włączyć tę opcję domyślnie. I(acbc08)

Wersja 1.7.0-alfa03

21 lutego 2024 r.

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

Zmiany w interfejsie API

  • Wprowadź grupy zastępujące w celu poprawy wykrywania zmian (0941b5)

Ulepszenia wydajności

  • Zwiększanie alokacji pamięci w przypadku wykrywania zmian (53e7fd)
  • Naprawianie wycieku pamięci w edytorze (0e097d)
  • Użyj ScopeMap, aby przekazywać unieważnienia podczas ponownego tworzenia wiadomości (e19a7e)
  • Mapa unieważnień optymalizacji pozwala zachować tylko stany pochodne (f11c44)
  • Zastąp przypadki użycia IdentityArraySet wartością ScatterSet (db572e)
  • Optymalizuj removeScope w: ScopeMap (bb0530)

Wersja 1.7.0-alfa02

7 lutego 2024 r.

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

Poprawki błędów

  • Unieważniaj kompozycyjne lambda w komponentach w tej samej ramce. (98301c)
  • Zadzwoń pod numer onRelease w tej samej kolejności co onForgotten. (2cd790)
  • Filtruj zmienione stany, których nie zaobserwowano w snapshotFlow. (796b80)

Ulepszenia wydajności

  • Zmodyfikuj obserwatora zrzutu, gdy jest już przezroczysty. (F60F30)
  • Optymalizuj konto SnapshotIdSet.lowest(). (7ae149)
  • Użyj fold() bez alokacji w SnapshotIdSet. (532b7d)
  • Usuń alokację iteratora (83f96b)

Wersja 1.7.0-alfa01

24 stycznia 2024 r.

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

Optymalizacja skuteczności

  • Dodawanie możliwości tworzenia przedziałów po dodaniu grupy podrzędnej (b5960c)
  • Optymalizacja modyfikacji rejestrowania stanów zrzutu (28c3fe)
  • Włącz tryb silnego pomijania (ed1766)

Poprawki błędów

  • uwzględnij metadane domyślnego parametru w wewnętrznej pamięci (096665)
  • Unikalna wartość atrybutu currentCompoundHashKey w większej liczbie przypadków (d4a872)
  • Uzyskiwanie grup po wyjściu z wywołania funkcji wbudowanej (2a90fc)

Wersja 1.6

Wersja 1.6.6

17 kwietnia 2024 r.

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

Wersja 1.6.5

3 kwietnia 2024 r.

Aplikacja 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.

Aplikacja 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

Aplikacja 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.

Aplikacja 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.

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

Poprawki błędów

  • Zadzwoń pod numer onRelease w tej samej kolejności co onForgotten. (2cd790)
  • Filtruj zmienione stany, których nie zaobserwowano w snapshotFlow. (796b80)

Wersja 1.6.0

24 stycznia 2024 r.

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

Ważne zmiany od wersji 1.5.0

Nowe funkcje

  • Ponowne zgłaszanie wyjątków, które są przetwarzane podczas pętli zmiany kompozycji (4dff9a)

Optymalizacja skuteczności

  • Optymalizacja modyfikacji rejestrowania stanów zrzutu (28c3fe)
  • Optymalizuj rememberSaveable (F01d79)
  • Odrocz ponowne odczytywanie stanów pochodnych do momentu zarejestrowania zmian (F38099)
  • Poprawienie lokalnych wartości kompozycji (a337ea)

Poprawki błędów

  • Naprawianie wycieku pamięci tabeli przedziałów (73fcfe)
  • Pomiń zmianę kompozycji składowych, które zostaną usunięte. (Ieeb99, b/254645321)
  • Wyzwalaj cykle życia funkcji RememberObserver tylko wtedy, gdy jest ona zapisana w obliczeniach zapamiętanych. (f6b4dc)
  • Ogranicz przechwytywanie $dirty do wbudowanych lambda. (acfca0)
  • Napraw błędy przenoszenia treści, które czasami otrzymują nieprawidłową kompozycję lokalną. (035cd6)

Wersja 1.6.0-rc01

10 stycznia 2024 r.

Aplikacja 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.

Aplikacja 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.

Aplikacja 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.

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

Zmiany w interfejsie API

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

Poprawki błędów

  • Użyj zasady referencyjnej dla stanu lokalnego zakresu kompozycji w kontekście. (83361c)
  • Ogranicz przechwytywanie $dirty do wbudowanych lambda. (acfca0)
  • Napraw błędy przenoszenia treści, które czasami otrzymują nieprawidłową kompozycję lokalną. (035cd6)
  • Używaj szybszych, nieprzydzielonych map haszujących w RecomposeScopeImpl. (D79494)
  • Używaj konta ObjectIntMap w aplikacji DerivedState. (21862e)
  • Użyj IntRef jako liczby całkowitej (SnapshotThreadLocal) w obiekcie DerivedState. (04eaf4)

Wersja 1.6.0-alfa08

18 października 2023 r.

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

Poprawki błędów

  • Wyzwalaj cykle życia funkcji RememberObserver tylko wtedy, gdy jest ona zapisana w obliczeniach zapamiętanych. (f6b4dc)
  • Popraw przydziały przy sortowaniu listy unieważnień. (954d63)
  • Użyj nowych map bez przydzielania lokalizacji w: SnapshotStateObserver. (4303ce)
  • Usuwaj unieważnienia, gdy kompozycja jest zdezaktywowana. (E001be)

Wersja 1.6.0-alfa07

4 października 2023 r.

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

Zmiany w interfejsie API

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

Wersja 1.6.0-alfa06

20 września 2023 r.

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

Wersja 1.6.0-alfa05

6 września 2023 r.

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

Wersja 1.6.0-alfa04

23 sierpnia 2023 r.

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

Nowe funkcje

  • Ponowne zgłaszanie wyjątków, które są przetwarzane podczas pętli zmiany kompozycji (4dff9a)

Zmiany w interfejsie API

  • Dodano metodę dezaktywacji funkcji ReusableComposition, usuwając obserwacje, ale utrzymując węzły na swoim miejscu. Dezaktywowaną kompozycję można aktywować ponownie, dzwoniąc pod numer setContent. (Ib7f31)
  • Dodano interfejs ReusableComposition, który umożliwia zarządzanie cyklem życia i ponownym używaniem podkompozycji. (I812d1, b/252846775)

Wersja 1.6.0-alfa03

9 sierpnia 2023 r.

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

Poprawki błędów

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

Wersja 1.6.0-alfa02

26 lipca 2023 r.

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

Nowe funkcje i ulepszenia wydajności

  • Optymalizuj rememberSaveable (F01d79)
  • Odrocz ponowne odczytywanie stanów pochodnych 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 lokalnych map kompozycji podczas ponownego użycia (782071)

Zmiany w interfejsie API

  • W przypadku elementu CompositionLocalProviders dodano specjalne przeciążenie wielkości liter. Pozwala to uniknąć nadmiarowego obciążenia, które powoduje szybsze podanie wielu wartości, ale jest nadmiarowe w przypadku podawania 1 wartości. (I6d640, b/288169379)

Poprawki błędów

  • Naprawianie wycieku pamięci tabeli przedziałów (73fcfe)
  • Jak przywracamy plik rememberSaveable, gdy stateSaver zwraca wartość null (90748c)

Wersja 1.6.0-alfa01

21 czerwca 2023 r.

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

Poprawki błędów

  • Pomiń zmianę kompozycji składowych, które zostaną usunięte. (Ieeb99, b/254645321)
  • Zmniejszone przydziały podczas stosowania zrzutów. (I65c09)
  • Unikaj obliczania readableHash w DerivedState, jeśli zrzut nie został zmodyfikowany (68c565)

Wersja 1.5

Wersja 1.5.4

18 października 2023 r.

Aplikacja 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 r.

Aplikacja 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.

Aplikacja 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.

Aplikacja 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.

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

Zmiany w interfejsie API

  • Usunięto przydziały ze zmiany kompozycji, animacji kolorów i elementu AndroidComposeView. (Ib2bfa)
  • Dodano adnotację @StateFactoryMarker, aby oznaczyć funkcje, które tworzą stany i muszą być uwzględnione w wywołaniu remember. (I64550)
  • Dodaj podstawowe wersje stanu i regionu MutableState (fb3d89)
  • Dodano Snapshot.isApplyObserverNotificationPending (I672a5)
  • Dodaliśmy podstawowe wersje interfejsu API State, co umożliwia śledzenie wartości Int, Long, Float i Double w obiektach State bez nałożenia kar za autobox. Aby użyć tych metod, użyj nowych metod fabrycznych, mutableIntState(Int), mutableFloatStateOf(Float) itp. (I48e43)

Poprawki błędów

  • Pomiń zmianę kompozycji składowych, które zostaną usunięte. (Ieeb99, b/254645321)
  • Nie zachowuj odnośnika do zrzutu w ComposerImpl (0206f7)
  • Nie stosuj kompozycji dwukrotnie (F5791b)
  • Sprawdź, czy wartości nie zainicjowanych wartości derywowanych (aa2a92) są unieważnione
  • Wywołaj onEndChanges podczas usuwania kompozycji. (62cc8c)
  • Naprawianie przenoszenia treści do kompozycji podrzędnej (4beb41)
  • Naprawianie potencjalnych blokad wzajemnych (c1a425 i 8edce0)
  • Narzędzie do tworzenia wiadomości utworzone dla okna Androida będzie teraz blokować połączenia z withFrameNanos zamiast do całej kompozycji, gdy otrzyma powiadomienie ON_STOP. Oznacza to, że okna powiązane ze zatrzymanymi aktywnościami będą nadal tworzone w celu zmiany danych, ale animacje lub inne elementy wywołujące withFrameNanos zostaną zablokowane. (Id9e7f, b/240975572)
  • Wykonaj wywołania zwrotne dezaktywacji dla LayoutNode przed usunięciem efektów 3784073
  • Poprawianie zmienionych flag lambda uruchamianych ponownie ea81df9
  • Naprawianie regresji edycji na żywo elementu kompozycyjnego z węzłami 73fd4d8
  • ON_STOP powinien wstrzymać transmisję klatki, a nie kompozycję ae276f1.
  • Unieważnij zakresy SnapshotStateObserver dla niezmienionych stanów derywowanych 84d9b1c
  • Naprawianie potencjalnego zakleszczenia podczas usuwania kompozycji 28761fc
  • Naprawianie przenoszenia treści do kompozycji podrzędnej 92d4156
  • Poprawianie zmienionych flag lambda ponownie uruchamianych (8a03e9)
  • Wykonaj wywołania zwrotne dezaktywacji dla LayoutNode przed usunięciem efektów (8b0fa4)
  • Napraw błąd endToMarker() podczas kończenia grup węzłów. (D71d980)
  • Do sprawdzenia dezaktywacji użyj bieżącej grupy SlotWriter (a0b518b)
  • Usuń fill w aplikacji SlotTable.moveSlotGapTo() i przenieś je, by zamknąć (81f9935)
  • Rozwiązywanie problemów z brakującymi unieważnieniami podczas przenoszenia treści przenoszonych (1d7c024)
  • Rozwiązywanie problemów z natychmiastowym unieważnieniem przeniesionych treści (8676618)

Ulepszenia wydajności

  • Unikaj obliczania 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 rekordów obiektów stanu z rekordami stanu niedostępnymi (C986960)
  • Podczas realizacji grup użyj funkcji kompozytora o prawidłowym zakresie (9a5e5b6)
  • Użyj IdentityArraySet do przechowywania unieważnień zrzutów (7f60cca)
  • Zmniejsz przydziały na potrzeby obserwacji zrzutów (5bc535f)

Wersja 1.5.0-rc01

26 lipca 2023 r.

Aplikacja 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 pochodnych do momentu zarejestrowania zmian (F38099)

  • Dostępna jest opcjonalna kontrola, która zaleca migrację wywołań mutableStateOf() do odpowiednich typów wyspecjalizowanych w przypadku elementów podstawowych. Jego identyfikator lint to AutoboxingStateCreation. Wcześniej ta kontrola była domyślnie włączona we wszystkich projektach. Aby zobaczyć to ostrzeżenie w edytorze Android Studio i wynikach lintowych projektu, zmień jego wagę z informacyjnej na ostrzeżenie (lub wyższą), deklarując warning "AutoboxingStateCreation" w konfiguracji modułu build.gradle lub build.gradle.kts (I34f7e):

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

Wersja 1.5.0-beta03

28 czerwca 2023 r.

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

Poprawki błędów

  • Pomiń zmianę kompozycji składowych, które zostaną usunięte. (Ieeb99, b/254645321)

Wersja 1.5.0-beta02

7 czerwca 2023 r.

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

Ulepszenia wydajności

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

Wersja 1.5.0-beta01

24 maja 2023 r.

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

Zmiany w interfejsie API

  • Usunięto przydziały ze zmiany kompozycji, animacji kolorów i pliku AndroidComposeView (Ib2bfa)
  • Dodano adnotację @StateFactoryMarker, aby oznaczyć funkcje, które tworzą stany i muszą być uwzględnione w wywołaniu remember. (I64550)
  • Dodaj podstawowe wersje stanu i regionu MutableState (fb3d89)
  • Dodano Snapshot.isApplyObserverNotificationPending (I672a5)

Poprawki błędów

  • Ograniczone przydziały (I65c09, d7ea77, 727974 i 445808)
  • Nie zachowuj odnośnika do zrzutu w ComposerImpl (0206f7)
  • Szybkie anulowanie tworzenia wiadomości CoroutineScopes (A55362 i bd382f)
  • Nie stosuj kompozycji dwukrotnie (F5791b)
  • Sprawdź, czy wartości nie zainicjowanych wartości derywowanych (aa2a92) są unieważnione
  • Wywołaj onEndChanges podczas usuwania kompozycji. (62cc8c)
  • Naprawianie przenoszenia treści do kompozycji podrzędnej (4beb41)
  • Naprawianie potencjalnych zakleszczeń (c1a425
  • ON_STOP powinno wstrzymać transmisję klatki z zegarem zamiast kompozycji (f4a2d1)
  • Poprawianie zmienionych flag lambda ponownie uruchamianych (8a03e9)
  • Wykonaj wywołania zwrotne dezaktywacji dla LayoutNode przed usunięciem efektów (8b0fa4)

Wkład z zewnątrz

  • Dodano Snapshot.isApplyObserverNotificationPending (I672a5)

Wersja 1.5.0-alfa04

10 maja 2023 r.

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

Zmiany w interfejsie API

  • Dodaliśmy podstawowe wersje interfejsu API State, co umożliwia śledzenie wartości Int, Long, Float i Double w obiektach State bez nałożenia kar za autobox. Aby użyć tych metod, użyj nowych metod fabrycznych, mutableIntState(Int), mutableFloatStateOf(Float) itp. (I48e43)

Poprawki błędów

  • Wywołaj onEndChanges podczas usuwania kompozycji. Węzły usunięte podczas Composition.dispose subskrybują węzeł onEndChanges, aby zresetować fokus.(03d4a47)

  • Zadbaj o unieważnienie niezainicjowanych wartości stanu derywowanego. Każdy stan pochodny 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 pochodnym za każdym razem, gdy zmienia się zależność. Zmiana zależności jest rejestrowana w momencie wczytywania zrzutu, co może nastąpić po odczytaniu stanu pochodnego (z powodu wywołania metody Snapshot.notifyObjectsInitialized()).

    Poprzednia logika obserwacji stanu pochodnego w projekcie SnapshotStateObserver oczyszcza stare zależności i odczytuje nową wartość. W rezultacie dochodziło do sytuacji, w której brakowało unieważnienia.

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

Wersja 1.5.0-alfa03

19 kwietnia 2023 r.

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

Zmiany w interfejsie API

  • Narzędzie do tworzenia wiadomości utworzone dla okna Androida będzie teraz blokować połączenia z withFrameNanos zamiast do całej kompozycji, gdy otrzyma powiadomienie ON_STOP. Oznacza to, że okna powiązane ze zatrzymanymi aktywnościami będą nadal tworzone w celu zmiany danych, ale animacje lub inne elementy wywołujące withFrameNanos zostaną zablokowane. (Id9e7f, b/240975572)

Poprawki błędów

  • Napraw potencjalne zakleszczenie na liście zrzutów i mapie 5c1a425
  • Wykonaj wywołania zwrotne dezaktywacji dla LayoutNode przed usunięciem efektów 3784073
  • Poprawianie zmienionych flag lambda uruchamianych ponownie ea81df9
  • Naprawianie regresji edycji na żywo elementu kompozycyjnego z węzłami 73fd4d8
  • ON_STOP powinien wstrzymać transmisję klatki, a nie kompozycję ae276f1.
  • Unieważnij zakresy SnapshotStateObserver dla niezmienionych stanów derywowanych 84d9b1c
  • Naprawianie potencjalnego zakleszczenia podczas usuwania kompozycji 28761fc
  • Naprawianie przenoszenia treści do kompozycji podrzędnej 92d4156

Wersja 1.5.0-alfa02

5 kwietnia 2023 r.

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

Nowe funkcje

  • Operator getValue używany przez Kotlina umożliwia teraz obsługę funkcji kompozycyjnej (F174f6e)

Poprawki błędów i lepsze działanie aplikacji

  • Zastępowanie rekordów obiektów stanu z rekordami stanu niedostępnymi (C986960)
  • Podczas realizacji grup użyj funkcji kompozytora o prawidłowym zakresie (9a5e5b6)
  • Napraw błąd endToMarker() podczas kończenia grup węzłów. (D71d980)
  • Do sprawdzenia dezaktywacji użyj bieżącej grupy SlotWriter (a0b518b)
  • Użyj IdentityArraySet do przechowywania unieważnień zrzutów (7f60cca)
  • Usuń fill w aplikacji SlotTable.moveSlotGapTo() i przenieś je, by zamknąć (81f9935)
  • Rozwiązywanie problemów z brakującymi unieważnieniami podczas przenoszenia treści przenoszonych (1d7c024)
  • Rozwiązywanie problemów z natychmiastowym unieważnieniem przeniesionych treści (8676618)
  • Zmniejsz przydziały na potrzeby obserwacji zrzutów (5bc535f)

Wersja 1.5.0-alfa01

22 marca 2023 r.

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

Nowe funkcje

  • Dodaje uprawnienia Modifier.Node#coroutineScope, aby umożliwić Modifier.Nodes uruchamianie współprogramów (I76ef9)
  • Zezwól Modifier.Nodes na odczyt CompositionLocals przez wdrożenie interfejsu CompositionLocalConsumerModifierNode. (Ib44df)

Wersja 1.4

Wersja 1.4.3

3 maja 2023 r.

Aplikacja androidx.compose.runtime:runtime-*:1.4.3 została wydana bez zmian.

Wersja 1.4.2

19 kwietnia 2023 r.

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

Poprawki błędów

  • Napraw potencjalne zakleszczenie na liście zrzutów i mapie 2eb6570

  • Dodawanie treści do SnapshotStateList lub SnapshotStateMap może spowodować zakleszczenie, jeśli modyfikacja odbywa się jednocześnie z bezpośrednim zapisem w rekordzie stanu. Znacznie częściej występuje to w przypadku zmian wprowadzonych przez usługę 93fcae828b, która używa bezpośredniego zapisu do zwalniania nieużywanych rekordów.

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

Wersja 1.4.1

5 kwietnia 2023 r.

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

Poprawki błędów

  • Napraw błąd endToMarker() podczas kończenia grup węzłów. d71d980

Wersja 1.4.0

22 marca 2023 r.

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

Ważne zmiany od wersji 1.3.0

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

Poprawki błędów i lepsze działanie aplikacji

  • Wyczyść indeksy obu zakresów w SnapshotStateObserver 29f4a3e
  • Dodaj grupy w treści niemożliwych do pominięcia lambda 7d06752
  • Popraw właściwości odniesienia do pamięci stanu zrzutu 93fcae8
  • Usuwanie boksu podczas wyszukiwania lokalnego kompozycji 0875717
  • Używanie prawidłowego klucza dla grup węzłów, których nie można ponownie użyć: 6388d8d
  • Chroń SnapshotStateObserver przed rekurencją i równoczesnością, zastosuj 98cb6ba
  • Dodano sprawdzanie granic indeksu w metodzie „get” IdentityArraySet 35a77d3
  • Aktualizowanie modułu tworzenia wiadomości, aby używać rozszerzeń ViewTreeLifecycleOwner 21c2122
  • Wyślij powiadomienia o zastosowaniu, gdy Recomposer zakończy ramkę. 98f2641
  • Naprawianie awarii indeksu wykraczającej poza dopuszczalny zakres podczas anulowania narzędzia Recomposer 8f8656f
  • Zawsze wymuszaj ponowne utworzenie, jeśli nadrzędni dostawcy kompozycji zmienią się w 9526fcc
  • Tolerancja rekomponowania dla anulowanych zadań a55f7ed
  • Poprawa obsługi unieważnień w przypadku dużej liczby kompozytorów 9b7ed67
  • Naprawianie generowania grup zamykających dla zwrotów nielokalnych: b6f590c

Wersja 1.4.0-rc01

8 marca 2023 r.

Aplikacja 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

Opublikowano androidx.compose.runtime:runtime:1.4.0-beta02 i androidx.compose.runtime:runtime-saveable:1.4.0-beta02. Wersja 1.4.0-beta02 zawiera te zatwierdzenia.

Wersja 1.4.0-beta01

8 lutego 2023 r.

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

Zmiany w interfejsie API

  • Dodano interfejs ComposeNodeLifecycleCallback, który umożliwia obserwowanie cyklu życia węzłów tworzenia (I3731b)
  • Dodano funkcję @TestOnly do funkcji Composer.disableSourceInformation(), ponieważ tę funkcję można bezpiecznie wywoływać tylko w teście. (I896c8)

Poprawki błędów

  • Usuwanie boksu lokalnego w wyszukiwaniu kompozycji (62f66a)
  • Popraw właściwości odniesienia do pamięci stanu zrzutu (dfb451)

Wersja 1.4.0-alfa05

25 stycznia 2023 r.

Opublikowano androidx.compose.runtime:runtime:1.4.0-alpha05 i androidx.compose.runtime:runtime-saveable:1.4.0-alpha05. Wersja 1.4.0-alpha05 zawiera te zatwierdzenia.

Zmiany w interfejsie API

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

Wersja 1.4.0-alfa04

11 stycznia 2023 r.

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

Zmiany w interfejsie API

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

Poprawki błędów

  • Chroń SnapshotStateObserver przed zastosowaniem rekurencyjnym i równoczesnym (d902fb)

Wersja 1.4.0-alfa03

7 grudnia 2022 r.

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

Zmiany w interfejsie API

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

Poprawki błędów

  • Powiadomienia o zastosowaniu zrzutu są teraz wysyłane po zakończeniu wprowadzania zmian przez aplikację Recomposer. (Iad6c0, b/222093277)

Wersja 1.4.0-alfa02

9 listopada 2022 r.

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

Wersja 1.4.0-alfa01

24 października 2022 r.

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

Zmiany w interfejsie API

  • SnapshotStateList i SnapshotStateMap mają teraz bezpośrednie implementacje toList() i toMap() z poszanowaniem praw. Te metody zwracają bieżącą treść bez tworzenia kopii, ponieważ zwracają stałe dane wewnętrzne używane do przechowywania treści. Tej wartości można użyć na przykład do utworzenia 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.

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

  • Bez zmian od wersji 1.3.2

Wersja 1.3.2

7 grudnia 2022 r.

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

Poprawki błędów

  • Zaktualizowano do obsługi androidx.compose.ui 1.3.2

Wersja 1.3.1

9 listopada 2022 r.

Aplikacja 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.

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

Ważne zmiany od wersji 1.2.0

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

Śledzenie kompozycji

Interfejsy API kompozycyjnego odbicia

Poprawki w czasie działania

System zrzutów

Wersja 1.3.0-rc01

5 października 2022 r.

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

Poprawki błędów

  • Poprawiona wartość ArrayIndexOutOfBoundsException pochodząca z tabeli przedziałów (b/249076084)

Wersja 1.3.0-beta03

21 września 2022 r.

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

Zmiana w związku z naruszeniem zachowania

  • Parametr na remember i rememberCoroutineScope, gdzie został zmieniony na crossinline. Spowoduje to zgłoszenie błędu dotyczącego wczesnych zwrotów, a nie umożliwienia wcześniejszego zwrotu, co spowoduje zgłoszenie późniejszego błędu wewnętrznego.
  • Ta zmiana może spowodować zgłoszenie nowych błędów kompilatora i wymagać usuwania nielokalnych zwrotów z elementów lambda przekazywanych do tych funkcji. (Ibea62)

Wersja 1.3.0-beta02

7 września 2022 roku

Aplikacja 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.

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

Zmiany w interfejsie API

  • Do CompositionData dodano metodę find, aby umożliwić narzędziom dla programistów używanie tego interfejsu API do szybkiego znajdowania podgrupy kompozycji na podstawie jej tożsamości. (I5794f)

Wersja 1.3.0-alfa03

10 sierpnia 2022 r.

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

Wersja 1.3.0-alfa02

27 lipca 2022 roku

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

Zmiany w interfejsie API

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

Wersja 1.3.0-alfa01

29 czerwca 2022 r.

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

Zmiany w interfejsie API

  • Przenoszenie funkcji narzędzi do środowiska wykonawczego (I4f729)

Wersja 1.2

Wersja 1.2.1

10 sierpnia 2022 r.

Aplikacja 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: usuwanie zagnieżdżonych zrzutów utworzonych z przezroczystych zrzutów b/239603305

Wersja 1.2.0

27 lipca 2022 roku

Aplikacja 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 kilka funkcji w wersji 1.2.0 oraz wiele poprawek błędów, które stabilizują działanie aplikacji. Najważniejszą nowością było wprowadzenie interfejsu API movableContentOf, który umożliwia obsługę złożonych elementów UX, takich jak przejścia elementów wspólnych. Interfejs movableContentOf API konwertuje funkcję lambda kompozycyjną na funkcję lambda, która przenosi jej stan i odpowiadające im węzły do każdej nowej lokalizacji. Gdy poprzednie wywołanie opuści kompozycję, stan jest tymczasowo zachowywany. Jeśli do kompozycji pojawi się nowe wywołanie funkcji lambda, stan i powiązane węzły są przenoszone do lokalizacji nowego wywołania. Jeśli nie dodasz żadnego nowego wywołania, stan zostanie trwale usunięty, a obserwatorzy zostaną o tym powiadomieni.

  • Jeśli lambda movableContentOf zostanie wywołana wiele razy w tej samej kompozycjach, dla każdego wywołania zostanie utworzony nowy stan i węzły. Gdy wywołania opuszczają kompozycję i pojawiają się nowe, stan jest przenoszony z pierwszych wywołań do wyjść w kolejności ich wywoływania. Wszystkie stany, do których nie zgłoszono nowych połączeń, zostaną trwale usunięte.

  • Oprócz tego i kilku innych nowych funkcji poświęcono dużo czasu na stabilizację środowiska wykonawczego i systemu stanu zrzutu. Usunięto różne wycieki pamięci i zoptymalizowaliśmy ścieżki kodu.

  • Podsumowanie zmian znajdziesz poniżej:

Nowe funkcje w aplikacji 1.2

Skuteczność – 1.2

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

Wersja 1.2.0-rc03

29 czerwca 2022 r.

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

Poprawki błędów

  • Powstałe obserwacje stanu były wcześniej bezwarunkowo usuwane z wielu elementów jednocześnie, co powodowało łamanie innych zakresów, które mogą nadal obserwować stan pochodny. Ta zmiana usuwa instancje stanu pochodnego tylko wtedy, gdy nie jest już obserwowany przez inne zakresy. (b/236618362)

Wersja 1.2.0-rc02

22 czerwca 2022 r.

Aplikacja 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.

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

Zmiany w interfejsie 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.

Aplikacja 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.

Aplikacja 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

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

Nowe funkcje

  • To jest pierwsza wersja beta 1.2.

Zmiany w interfejsie API

  • Dodano eksperymentalną funkcję Snapshot.unsafeEnter/unsafeLeave (I108f3)
  • Dodano eksperymentalny interfejs API Snapshot.asContextElement() (Iff072)
  • Adnotacja i adnotacje @ComposableTarget oznaczone przez @ComposableTargetMarker mogą być teraz używane w zakresie plików z wykorzystaniem prefiksu @file. Użycie adnotacji docelowej w zakresie pliku spowoduje, że kompilator przyjmie, że wszystkie funkcje kompozycyjne w pliku są kierowane na powiązaną aplikację. Na przykład użycie polecenia @file:UiComposable deklaruje, że wszystkie funkcje @Composable są kierowane na aplikację interfejsu użytkownika tworzenia wiadomości. Funkcja, która musi być kierowana na innego użytkownika, musi wyraźnie podać adnotację w znaczniku docelowym dla odpowiedniego aplikatora. (I40804)

Wersja 1.2.0-alfa08

20 kwietnia 2022 r.

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

Zmiany w interfejsie API

  • Dodano język TracingInProgress do interfejsu CompositionTracer. (Ic6f12)
  • Dodawanie usługi recomposeScopeIdentity do usługi Composer (I0c873)
  • Interfejsy API śledzenia z ograniczeniami (Composer.setTracer) do OptIn(InternalComposeTracingApi). (I9187f)
  • Dodano element ResuableContentHost, który zapewnia większą kontrolę nad okresem tworzenia stanu treści do wielokrotnego użytku. Jeśli na przykład kompozycja podrzędna jest tymczasowo nieużywana, treść może zostać zdezaktywowana, co spowoduje, że wszystkie zapamiętane stany kompozycji zostaną zapomniane, na przykład wszystkie efekty jednorazowe. (I2c0f2, b/220322704)

Wersja 1.2.0-alfa07

6 kwietnia 2022 roku

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

Zmiany w interfejsie API

  • Dodano nową funkcję Snapshot.withoutReadObservation { ... }. Umożliwia użytkownikom uruchamianie przekazanej funkcji lambda bez subskrybowania zmian wartości stanu odczytywanych podczas tego bloku. Może się ono przydać w przypadkach, gdy chcesz korzystać z bezpiecznego zapisu/odczytu na podstawie zrzutów, ale chcesz mieć możliwość odczytania wartości bez konieczności wprowadzania zmian w strukturze ani ponownego pomiaru. (I9f365, b/214054486)

Wersja 1.2.0-alfa06

23 marca 2022 r.

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

Wersja 1.2.0-alfa05

9 marca 2022 r.

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

Wkład z zewnątrz

  • Zaktualizowano, aby używać współprogramów Kotlinx 1.6.0 (I3366d)

Wersja 1.2.0-alfa04

23 lutego 2022 r.

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

Zmiany w interfejsie API

  • Dodano właściwości ComposableTarget, ComposableTargetMarker i ComposableOpenTarget, które umożliwiają kompilowanie raportowania czasu, gdy funkcja kompozycyjna jest wywoływana w celu kierowania na aplikację, do której nie została zaprojektowana.

    W większości przypadków adnotacje mogą zostać wywnioskowane przez wtyczkę kompilatora compose, więc bezpośrednie używanie tych adnotacji powinno być rzadkie . Przypadki, których nie można wywnioskować, obejmują tworzenie i używanie niestandardowych aplikacji, abstrakcyjnych funkcji kompozycyjnych (takich jak metody interfejsu), pól lub zmiennych globalnych, które są zmiennymi kompozycyjnymi (wywnioskowane są zmienne lokalne i parametry) oraz korzystanie z funkcji ComposeNode lub powiązanych funkcji kompozycyjnych.

    W przypadku aplikacji niestandardowych funkcje kompozycyjne, które wywołują funkcje ComposeNode lub ReusableComposeNode, muszą dodać adnotację CompoableTarget do funkcji i dowolnych typów parametrów lambda kompozycyjnych. Zalecamy jednak utworzenie adnotacji z adnotacją ComposableTargetMarker, a następnie użycie oznaczonej adnotacji bezpośrednio zamiast ComposableTarget. Adnotacja kompozycyjna oznaczona za pomocą atrybutu ComposableTargetMarker jest odpowiednikiem ComposbleTarget z pełną i jednoznaczną nazwą klasy atrybutu jako parametru stosującego. Przykład użycia właściwości ComposableTargetMarker znajdziesz tutaj: anroidx.compose.ui.UiComposable. (I38f11)

Wersja 1.2.0-alfa03

9 lutego 2022 r.

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

Zmiany w interfejsie API

  • Dodano funkcję movableContentOf, która konwertuje funkcję lambda kompozycyjną na obiekt lambda, który przenosi jego stan, a także odpowiadające mu węzły do każdej nowej lokalizacji. Gdy poprzednie wywołanie opuści kompozycję, stan jest tymczasowo zachowywany, a jeśli do kompozycji pojawi się nowe wywołanie funkcji lambda, stan i powiązane z nim węzły są przenoszone do lokalizacji nowego wywołania. Jeśli nie dodasz żadnego nowego wywołania, stan zostanie trwale usunięty, a obserwatorzy zostaną powiadomieni.

    Jeśli lambda movableContentOf zostanie wywołana wiele razy w tej samej strukturze, dla każdego wywołania zostanie utworzony nowy stan i węzły. Gdy wywołania opuszczają kompozycję i wchodzą nowe, stan jest przenoszony z pierwszych wywołań do wywołań w kolejności ich wywoływania. Wszystkie stany, które nie zostały zajęte przez nowe wywołania, są trwale usuwane. (Ib4850)

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

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

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

Wersja 1.2.0-alfa02

26 stycznia 2022 r.

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

Wersja 1.2.0-alfa01

12 stycznia 2022 r.

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

Zmiany w interfejsie API

  • Do elementu CompositionData dodano pole identity, które umożliwia generowanie 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.

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

Poprawki błędów

Wersja 1.1.0

9 lutego 2022 r.

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

Ważne zmiany od wersji 1.0.0

  • Stabilna obsługa efektu sygnalizowania końca przewijania w Androidzie 12.
  • Ulepszenia rozmiaru docelowych elementów dotykowych
  • Pamiętaj, że w przypadku interfejsu Compose 1.0 komponenty Material będą rozszerzały swoją przestrzeń układu, aby spełnić wytyczne dotyczące ułatwień dostępu w zakresie rozmiaru docelowego elementu dotykowego. Na przykład element dotykowy przycisku rozwinie się do minimalnego rozmiaru 48x48dp, nawet jeśli ustawisz jego mniejszy rozmiar. Dzięki temu interfejs Compose Material jest taki sam jak w przypadku komponentów Material Design, co zapewnia spójne zachowanie w przypadku łączenia widoków i tworzenia. Ta zmiana sprawi też, że gdy tworzysz interfejs z użyciem komponentów Compose Material, będą one spełnione minimalne wymagania dotyczące ułatwień dostępu w elementach dotykowych.
  • Stabilna obsługa Nawigacja Rail
  • Przekształcanie wielu wcześniej eksperymentalnych interfejsów API w stabilne
  • obsługa nowszych wersji Kotlin,

Wersja 1.1.0-rc03

26 stycznia 2022 r.

Aplikacja 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 umożliwić obsługę materiału tworzenia wiadomości 1.1.0-rc03

Wersja 1.1.0-rc01

15 grudnia 2021 roku

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

Wersja 1.1.0-beta04

Grudzień 1, 2021

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

Nowe funkcje

  • Zaktualizowano w celu zapewnienia zgodności z Kotlin 1.6.0

Wersja 1.1.0-beta03

17 listopada 2021 r.

Aplikacja 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.

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

Zmiany w interfejsie API

  • Kod zrzutu dysku 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

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

Wersja 1.1.0-alfa06

13 października 2021 r.

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

Zmiany w interfejsie API

  • Usunięto element InternalCompilerApi z metod narzędzia Composer, które muszą być wywoływane przez moduły (I1aa0b)
  • Tabela Recomposer.state została wycofana i zastąpiona przez Recomposer.currentState, aby zmienić jej typ na StateFlow (Ic2ab3, b/197773820)

Wersja 1.1.0-alfa05

29 września 2021 r.

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

Wersja 1.1.0-alfa04

15 września 2021 r.

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

Wersja 1.1.0-alfa03

1 września 2021 roku

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

Nowe funkcje

  • Kompilator tworzenia wiadomości obsługuje teraz starsze wersje środowiska wykonawczego tworzenia wiadomości (1.0). Przed tą zmianą kompilator tworzenia wiadomości był zgodny tylko ze środowiskiem wykonawczym tworzenia w tej samej wersji lub nowszej. Po tej zmianie kompilator tworzenia wiadomości jest zgodny ze starszą wersją środowiska wykonawczego tworzenia wiadomości (1.0). (Aosp/1796968)
  • Zaktualizowano element Tworzenie 1.1.0-alpha03, aby bazował na Kotlin 1.5.30. (I74545)

Wersja 1.1.0-alfa02

18 sierpnia 2021 r.

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

Wersja 1.1.0-alfa01

4 sierpnia 2021 r.

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

Wersja 1.0

Wersja 1.0.5

3 listopada 2021 r.

Aplikacja 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 przypadku instancji pochodnej klasy. (Aosp/1792247)

Wersja 1.0.4

13 października 2021 r.

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

Aktualizacje zależności

  • Zaktualizowano w celu dopasowania do Kotlin 1.5.31

Wersja 1.0.3

29 września 2021 r.

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

Aktualizacje zależności

  • Zaktualizowano w celu dopasowania do Kotlin 1.5.30

Wersja 1.0.2

1 września 2021 roku

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

Zaktualizowano, aby obsługiwać wersję 1.0.2 tworzenia wiadomości. Funkcja Utwórz 1.0.2 jest nadal zgodna z Kotlinem 1.5.21.

Wersja 1.0.1

4 sierpnia 2021 r.

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

Aktualizacje zależności

  • Zaktualizowano zgodnie z kotlinem 1.5.21.

Wersja 1.0.0

28 lipca 2021 roku

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

Główne funkcje wersji 1.0.0

To jest pierwsza stabilna wersja funkcji Compose. Więcej informacji znajdziesz na oficjalnym blogu dotyczącym wydania wiadomości.

Znane problemy

  • Jeśli używasz Androida Studio Bumblebee Canary 4 lub AGP 7.1.0-alpha04/7.1.0-alpha05, może wystąpić ta awaria:

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

    Aby rozwiązać ten problem, tymczasowo zwiększ wartość minSdkVersion do poziomu 24+ w pliku build.gradle. Ten problem zostanie rozwiązany w następnej wersji Androida Studio Bumblebee i interfejsu API 7.1. (b/194289155)

Wersja 1.0.0-rc02

14 lipca 2021 roku

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

  • Naprawiono warunki wyścigu w programie SnapshotStateObserver, co powodowało występowanie ostrych wyjątków NullPointerException. (Aosp/1763445, aosp/1758105, b/192677711)
  • Rozwiązaliśmy problemy ze zrzutami środowiska wykonawczego, 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 awarii. (b/193006595, b/192570897)

Wersja 1.0.0-rc01

1 lipca 2021 r.

Aplikacja 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.

Aplikacja 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 tych 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.text,
  • androidx.compose.ui.text,
  • androidx.compose.ui.unit,
  • androidx.compose.ui.util

Co to są reguły profilu?

  • Reguły profilu biblioteki są określone w pliku tekstowym baseline-prof.txt znajdującym się w katalogu src/main lub podobnym. Każda reguła jest podana w pliku w oddzielnym wierszu. W tym przypadku reguła jest wzorcem dopasowywania do metod lub klas w bibliotece. Składnia tych reguł jest nadzbiorem formatu profilu ART zrozumiałego dla człowieka, który jest używany podczas korzystania z funkcji adb shell profman --dump-classes-and-methods .... Reguły te mogą mieć 2 formy kierowania na metody lub klasy.

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

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

    <CLASS_DESCRIPTOR>
    
  • <FLAGS> to co najmniej jeden ze znaków H, S i P wskazujący, czy ta metoda ma być oznaczona jako „Hot”, „Startup” lub „Post Startup”.

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

  • <METHOD_SIGNATURE> to podpis metody, który zawiera nazwę, typy parametrów oraz zwracane typy metody. Na przykład metoda fun isPlaced(): Boolean na LayoutNode ma podpis isPlaced()Z.

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

Jaką rolę pełnią reguły?

  • Metoda z flagą H wskazuje, że jest to metoda „gorąca” i należy ją skompilować z wyprzedzeniem.

  • Metoda z flagą S wskazuje, że jest ona wywoływana podczas uruchamiania i powinna zostać skompilowana z wyprzedzeniem, aby uniknąć kosztów kompilacji i interpretowania jej podczas uruchamiania.

  • Metoda z flagą P wskazuje, że jest wywoływana po uruchomieniu.

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

Jak to działa?

  • Biblioteki mogą definiować te reguły, które zostaną spakowane do artefaktów AAR. Gdy zostanie utworzona aplikacja, która zawiera te artefakty, reguły te są scalane, a scalone reguły są wykorzystywane do stworzenia kompaktowego binarnego profilu ART specyficznego dla danej aplikacji. ART może wykorzystać ten profil, gdy aplikacja jest zainstalowana na urządzeniach, aby z wyprzedzeniem skompilować określony podzbiór aplikacji w celu zwiększenia wydajności aplikacji, zwłaszcza jej 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.

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

Zmiany w interfejsie API

  • State<T> to teraz State<out T> (I69049)
  • Zmiana w interfejsie API ControlledComposition umożliwiająca ponowne kompilowanie zmian w pojedynczym podsumowaniu. (Iaafd1, b/184173932)

Wersja 1.0.0-beta07

18 maja 2021 r.

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

Zmiany w interfejsie API

  • Dodano nowe interfejsy API kompilatora tworzenia, które umożliwiają usuwanie informacji o źródle wygenerowanych przez kompilator podczas minifikacji źródła. (Ia34e6)
  • Wprowadzono funkcję ReusableContent, która spróbuje ponownie wykorzystać węzły w swojej treści, zamiast zastępować je po zmianie klucza. Po zmianie klucza poprzednie wartości w tabeli przedziałów są ignorowane z wyjątkiem wygenerowanych węzłów i wartości używanych do ich aktualizowania.

    Wprowadzono funkcję ReusableComposeNode, która będzie używać utworzonego węzła, a nie zastępować go tak jak w przypadku typu ComposeNode. (I1dd86)

  • @ComposeCompilerApi nie ma już stanu @RequiresOptIn (Iab690)

Poprawki błędów

  • LazyColumn/Row zachowa teraz maksymalnie 2 widoczne wcześniej elementy (nie wyrzucone), nawet jeśli zostaną już przewinięte. Dzięki temu komponent może ponownie wykorzystywać aktywne kompozycje podrzędne, gdy trzeba utworzyć nowy element, który zwiększa szybkość przewijania. (IE5555)

Wersja 1.0.0-beta06

5 maja 2021 roku

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

Zmiany w interfejsie API

  • @ComposeCompilerApi nie ma już stanu @RequiresOptIn (Iab690)

Wersja 1.0.0-beta05

21 kwietnia 2021 r.

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

Zmiany w interfejsie API

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

Poprawki błędów

  • Pliki AndroidManifest z elementów 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.

Aplikacja 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ą lokalne funkcje kompozycyjne można było pominąć na podstawie ich parametrów. Po tej zmianie żadne lokalne funkcje kompozycyjne nie zostaną pominięte. Ta zmiana jest powszechna i oczekiwana przez funkcje lokalne do przechwytywania parametrów z elementu nadrzędnego, a ich pomijanie jest częstym źródłem błędów.

    Podsumujmy ten przykład:

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

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

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

Wersja 1.0.0-beta03

24 marca 2021 r.

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

Zmiany w interfejsie API

  • Interfejs DefaultMonotonicFrameClock został wycofany. Połączenie z numerem withFrameNanos lub Recomposer.runRecomposeAndApplyChanges bez użycia danych MonotonicFrameClock spowoduje błąd IllegalStateException. (I4eb0d)

Wersja 1.0.0-beta02

10 marca 2021 r.

Aplikacja 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 użytkowania eksperymentalnych interfejsów API (I6aa29, b/174531520)
  • Naprawiono problem z nieprawidłowym atrybutem rememberSaveable { mutableStateOf(0) } użytym w miejscu docelowym nawigacji-komponent. (I1312b, b/180042685, b/180701630)

Wersja 1.0.0-beta01

24 lutego 2021 r.

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

To jest pierwsza wersja beta funkcji tworzenia wiadomości w wersji 1.0.0.

Zmiany w interfejsie API

  • Dodaj Recomposer.runRecomposeConcurrentlyAndApplyChanges eksperymentalny interfejs API służący do rekomponowania nieprawidłowych kompozycji poza pętlę głównej ramki. (I342d0)
  • Wszystkie obiekty kompozycyjne oznaczone symbolem @ReadOnlyComposable są teraz weryfikowane podczas kompilowania, aby mieć pewność, że wywołują tylko inne elementy @ReadOnlyComposable (I58961)
  • Pole defaultFactory dla właściwości compositionLocalOf i staticCompositionLocalOf jest teraz wymagane zamiast opcjonalnego.

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

    W przypadku typów z wartością null rozważ podanie { null } jako domyślnej fabryki.

    Nie zalecamy używania lokalnych z typami bez wartości null, chyba że możesz podać rozsądną wartość domyślną. Jeśli nie ma żadnej rozsądnej wartości domyślnej, lambda defaultFactory powinna zgłosić wyjątek. Złożenie wyjątku oznacza jednak, że konsumenci będą pośrednio zależnić od jego podania, który nie jest egzekwowany przez system typów. (Ifbd2a)

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

  • Wycofane komponenty typu emptyContent() zostały usunięte. Użyj w zamian zasady {}. (Idb33f, b/179432510)

  • Nazwa dostawców została zmieniona na CompositionLocalProvider

    • Konstruktor kompozycji nie akceptuje już parametru klucza i został wycofany.
    • Element 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
    • Obiekt ComposableLambda został przekształcony w interfejs zamiast konkretnej klasy i nie ma już parametrów typu.
    • Obiekt ComposableLambdaN został przekształcony w interfejs zamiast konkretnej klasy i nie ma już parametrów typu.
    • Funkcja zrzutFlow została przeniesiona do przestrzeni nazw androidx.compose.runtime
    • Metoda scalania SnapshotMutationPolicy nie jest już eksperymentalna
    • Funkcja @TestOnly najwyższego poziomu clearRoots została usunięta. Nie jest już potrzebna.
    • Funkcje keySourceInfoOf i resetSourceInfo zostały usunięte. Nie są już potrzebne.
    • Element Composer.collectKeySourceInformation został usunięty. Nie jest już potrzebna.
    • Metody isJoinedKey,joinKeyLeft i joinKeyRight zostały usunięte. Nie są już potrzebne.
    • Różne interfejsy API najwyższego poziomu zostały przeniesione i uporządkowane w różne pliki. Ze względu na semantykę klasy plików stosowanej przez Kotlin powoduje to przerwanie zgodności plików binarnych, ale nie zgodności ze źródłem. U większości użytkowników nie powinno to stanowić problemu.
    • (I99b7d, b/177245490)
  • Narzędzie SnapshotStateObserver nie ma już funkcji eksperymentalnych (Id2e6a)

  • Usunięto niektóre wycofane wcześniej interfejsy API (Ice5da, b/178633932).

  • Wprowadzono te zmiany w interfejsie Material API:

    • Dodano parametr contentPadding do Top/bottomAppBar, aby umożliwić dostosowanie domyślnego dopełnienia.
    • Zmieniono kolejność parametrów w BackdropScaffold, by były zgodne z wytycznymi API. Wymagane parametry znajdowały się przed parametrami opcjonalnymi.
    • Parametr icon w elemencie bottomPoruszaItem został przeniesiony za parametr selected i onClick.
    • Zmieniono nazwę parametru alwaysShowLabels w elemencie {Down PojawiItem na alwaysShowLabel.
    • Zmieniono nazwy parametrów bodyContent w kilku komponentach na content.
    • Zmieniła się kolejność parametrów w tabeli ButtonDefaults.buttonColors(). Uwaga: ponieważ rodzaj parametrów się nie zmienił, nie spowoduje to błędu w kodzie. Pamiętaj, by używać nazwanych parametrów lub zaktualizować kolejność ręcznie. W przeciwnym razie kod nie będzie działać tak samo jak poprzednio.
    • Dodano parametr secondaryVariant do tabeli darkColors(). Ten kolor jest zwykle taki sam jak kolor secondary w ciemnym motywie, ale jest dodatkowy dla zachowania spójności i możliwości dostosowania.
    • Usunęliśmy elementy ElevationDefaults i animmateElevation() z publicznej platformy interfejsu API, ponieważ nie były one powszechnie używane lub przydatne.
    • Zmieniono nazwę onValueChangeEnd w Slider na onValueChangeFinished i sprawiliśmy, że może ona mieć wartość null.
    • Zmieniono nazwę parametru text w Snackbar na content, aby zachować spójność.
    • Dodano parametr contentPadding do elementu DropdownMenuItem, aby umożliwić dostosowanie domyślnego dopełnienia, i ustawiliśmy content jako rozszerzenie w RowScope.
    • Nazwa elementu ModalDrawerLayout została zmieniona na ModalDrawer.
    • Nazwa elementu BottomDrawerLayout została zmieniona na BottomDrawer.
    • (I1cc66)

Wersja 1.0.0-alfa12

10 lutego 2021 r.

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

Zmiany w interfejsie API

  • Obsługa grup widoków została usunięta z aplikacji UiApplier. Wycofane elementy kompozycyjne emitView zostały usunięte. (Ifb214)
  • Nazwa elementu CompositionReference zmieniła się na CompositionContext (I53fcb).
  • Komponent KomponentActivity.setContent został przeniesiony do strony androidx.activity.compose.setContent w module androidx.activity:activity-compose. (Icf416)
  • Zaktualizowaliśmy interfejs Snapshot API, aby był bardziej zgodny ze wskazówkami dotyczącymi interfejsu API oraz ukrywał wewnętrzne klasy implementacji z publicznego interfejsu API. (Id9e32).
  • Zmieniono nazwy trybu Ambients, aby dopasować je do nazwy Ambient -> CompositionLocal. Oświetlenie nazywane wcześniej AmbientFoo, teraz CompositionLocals to LocalFoo. (I2d55d)
  • Zmieniono nazwę trybu Ambient na CompositionLocal, a odpowiednio na wygaszacz / staticAmbientOf – na compositionLocalOf / staticCompositionLocalOf. Ta zmiana pomoże uściślić przeznaczenie CompositionLocal: mechanizm udostępniania / pobierania wartości lokalnych do kompozycji. Instancje CompositionLocal powinny mieć prefiks Local, np. val LocalFoo = obiektLocalOf { Foo() }. (Ia55b6)
  • TakeMutableSnapshot i TakeSnapshot zostały przeniesione do innych metod Snapshot. (I91f19)
  • Wycofaliśmy atrybut @ComposableContract i zastąpiliśmy go 3 bardziej szczegółowymi adnotacjami.

    Rozszerzenie @ComposableContract(restartable = false) zmieniło się w @NonRestartableComposable. @ComposableContract(readonly = true) zmieniło się w @ReadOnlyComposable @ComposableContract(preventCapture = true) zostało zmienione na @DisallowComposableCalls @ComposableContract(tracked = true) zostało usunięte. (I60a9d)

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

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

  • Narzędzie do tworzenia kopii zapasowych można teraz zamknąć. Zamknięte narzędzia do rekompozycji będą kontynuowane do momentu ukończenia komponowania podrzędnych współużytkowań. Nazwa Recomposer.shutDown została zmieniona, aby anulować i kontrastować z zamknięciem. (Ib6d76)

  • Artefakt compose:runtime-dispatch został wycofany. Element MonotonicFrameClock można teraz znaleźć w komponencie compose:runtime, a AndroidUiDispatcher – w kompozycji:ui. (Ib5c36)

  • Interfejs API, na który kierowana jest wtyczka kompilatora Compose, został refaktoryzowany tak, aby używał interfejsu zamiast konkretnej klasy. Interfejs nie używa już parametru typu.

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

  • Wprowadzenie narzędzia SnapshotMutableState (Icfd03)

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

  • Usunięto element Recomposer.current(). [Abstract]ComposeView teraz domyślnie ustawia leniwe tworzenie funkcji Recomposer z zakresem okna, które są wywoływane przez element ViewTreeLifecycleOwner dla okna. Zmiana kompozycji i znaczniki animacji oparte na ramceNanos są wstrzymywane, gdy cykl życia hosta jest zatrzymywany. (I38e11)

  • Funkcja Recomposer.runningRecomposers oferuje teraz globalny przepływ stanu kompozycji (tylko do odczytu) obiektu RecomposerInfo, który umożliwia obserwowanie ciągłego stanu kompozycji w trakcie tego procesu. Wolę ten interfejs API niż Recomposer.current(), który został już wycofany. (If8ebe)

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

Wersja 1.0.0-alfa11

28 stycznia 2021 roku

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

Zmiany w interfejsie API

  • Interfejsy onCommit, onDispose i onActive zostały wycofane i zastąpione przez SideEffect oraz DisposableEffect API (If760e)
  • Interfejs API emit() i wszystkie przeciążenia zostały wycofane i zmienione na ComposeNode. Interfejsy API są identyczne, ale mają inną nazwę zgodną z konwencjami nazewnictwa stosowanymi w narzędziu I4137b.
  • Metody metody invalidate i enterpriseReference() zostały teraz wycofane. Zastąpiły one obecne RecomposeScope i zapamiętaCompositionReference. (I583a8)
  • PamiętajObserver zastępuje CompositionLifecycleObserver, a usługa CompositionLifecycleObserver została wycofana.

    RememberObserver zastępuje CompositionLifecycleObserver zmodyfikowaną semantyką i nowymi metodami. Przejście na nowy interfejs API można wprowadzić mechanicznie w przypadku obiektów, które są zapamiętywane tylko raz. Jest to i nadal jest zalecane. Jeśli jednak odwołanie zostało zapisane więcej niż raz w kompozycji, funkcja onRemembered jest wywoływana dla każdego odwołania, w którym element onEnter jest wywoływany tylko raz. Obiekt onEnter został wywołany wiele razy, jeśli był używany w kompozycjach podrzędnych, takich jak WithConstraints i Scaffold, przez co pojedyncze wywołanie onEnter było niewiarygodne i został usunięty dla RememberObserver.

    RememberObserver dodaje element onAbandoned, który jest wywoływany, jeśli instancja RememberObserver jest zwracana z wywołania zwrotnego przekazanego do remember, ale nie została zapamiętana w stanie kompozycji, dlatego nigdy nie będzie wywoływana onRemembered. Może się tak zdarzyć, gdy wyjątek zakończy kompozycję przed ukończeniem lub zostanie ona odrzucona, ponieważ państwo tworzy kompozycję, która jest już nieaktualna lub z innego powodu nie jest już potrzebna. Jeśli instancja RememberObserver zgodnie z powyższym zaleceniem referencyjnym śledzi zasób zewnętrzny, zarówno onForgotten, jak i onAbandoned oznacza, że zasób nie jest już potrzebny. Jeśli obiekt śledzi rozpoczęte zadania lub zasoby przydzielone w onRemembered, element onAbandoned może zostać zignorowany, ponieważ nie zostanie wywołany po wywołaniu funkcji onRemembered. (I02c36)

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

Poprawki błędów

  • Funkcja WithConstraints została zmieniona na BoxWithConstraints, a następnie przeniesiono ją do Foundation.layout. (I9420b, b/173387208)
  • Wykorzystywanie narzędzia TestCoroutineDispatcher do testowania (I532b6)

Wersja 1.0.0-alfa10

13 stycznia 2021 r.

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

Znacząca zmiana

  • Zmiana struktury wewnętrznego interfejsu API kompilatora umożliwia grupowanie zmian w węzłach wygenerowanych w wyniku kompozycji na etapie stosowania zmian po zakończeniu wszystkich funkcji @Composable.

    Jest to zmiana powodująca przerwy w działaniu, która może mieć wpływ na kod aplikacji, ponieważ węzły nie są już dostępne w wewnętrznych i eksperymentalnych interfejsach API do czasu zastosowania zmian. Zwykle można obejść ten problem, ujmując kod w takie zależności w kompozycji SideEffect w celu odroczenia wykonania kodu do momentu utworzenia i zainicjowania węzłów. (I018da)

Zmiany w interfejsie API

  • Dodaliśmy sposób śledzenia, czy rekomponent wprowadził zmiany. (I1b3e2).
  • Rozwiń interfejsy [Abstract]ComposeView API, aby umożliwić recykling widoków opartych na Compose, tak aby ich kompozycję można było odtworzyć później. Dodaj interfejsy API do instalowania i wykrywania ograniczonych do okna obiektów Recomposers i CompositionReferences w celu tworzenia kompozycji podrzędnych.

    Dodano element ViewCompositionStrategy w strategii usuwania kompozycji w obiektach [Abstract]ComposeViews. Działanie domyślne to utylizacja po odłączeniu okna. (I860ab)

Poprawki błędów

  • Narzędzie Recomposer ujawnia teraz przepływ w jego bieżącym stanie, umożliwiając monitorowanie jego aktywności i aktywności powiązanych efektów. (Ifb2b9)
  • Dostęp do natywnego zdarzenia KeyEvent można teraz uzyskać za pomocą polecenia keyEvent.nativeKeyEvent (I87c57, b/173086397).

Wersja 1.0.0-alfa09

16 grudnia 2020 roku

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

Zmiany w interfejsie API

  • Usunięto SlotTable, SlotReader i SlotWriter z publicznego interfejsu API. Wcześniej były one oznaczone jako InternalComposeAPI. Są one teraz dostępne tylko w module tworzenia wiadomości.

    Funkcje CompositionData i CompositionGroup zostały dodane jako zamienniki interfejsu API narzędzi do interfejsu i wykorzystywane do wyodrębniania informacji o kompozycji. Są one publiczne, ale nie powinny być używane poza interfejsem API ui-tooling, ponieważ zawierają nieprzetworzone informacje interpretowane przez ten interfejs API (I31a9c).

  • Klasa Applier nie jest już uznawana za klasę (Id85b0)

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

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

    Dodano nową metodę: insertBottomUp().

    W zależności od tego, który wariant ma lepszą skuteczność, aplikacja wstawia węzły do edytowanego drzewa za pomocą metody insertTopDown() lub insertBottomUp().

    W przypadku niektórych drzew, np. LayoutNode i View, konstruowanie od dołu jest znacznie skuteczniejsze niż w przypadku drzew rosnących. Przed tą zmianą wdrożyliśmy stos wstawek w celu wdrożenia modelu oddolnego, który trzeba kopiować do każdego wnioskodawcy, który w celu zwiększenia skuteczności wymagał tworzenia oddolnego poziomu. W związku z tą zmianą właściwość Applier zastępuje właściwość insertBottomUp(), aby utworzyć strukturę od dołu do góry, a element insertTopDown() – od góry. (Icbdc2)

  • Tworzenie obsługuje metody pobierania właściwości, które umożliwiają tworzenie wywołań kompozycyjnych. Ta funkcja nie zostanie wycofana, ale zmieni się składnia deklarowania metody pobierania właściwości jako @Composable.

    Obecnie wycofywano składnię, która służyła do dodawania adnotacji do samej właściwości:

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

    Prawidłową składnią obecnie jest dodanie adnotacji do metody pobierania właściwości:

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

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

Poprawki błędów

  • AndroidOwner – wewnętrzny (Ibcad0, b/170296980)
  • Element subcomposeInto(UkładNode) został zmieniony na wewnętrzny (Id724a)

Wersja 1.0.0-alfa08

Grudzień 2, 2020

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

Zmiany w interfejsie API

  • Dodano sprawdzanie lintowania pod kątem nazewnictwa i pozycji parametrów kompozycyjnych lambda w celu sprawdzenia zgodności ze wskazówkami dotyczącymi tworzenia wiadomości. Przeprowadzono też migrację niektórych interfejsów API, używając children jako nazwy końcowej lambda do content, zgodnie ze sprawdzaniem lintowania i wskazówkami. (Iec48e).
  • Narzędzie Recomposer nie akceptuje już elementu EmbeddingContext. Wymagane zależności harmonogramu są pobierane z efektuCoroutineContext. Interfejs FrameManager został wycofany. Integracje z platformami powinny zainicjować własną obsługę zrzutów globalnych. (I02369)
  • Nazwa funkcji RestorableStateHolder.withRestorableState została zmieniona na RestorableStateProvider (I66640)

Poprawki błędów

  • Wycofano elementy otoczenia, których sufiks to Ambient, i zastąpiono je nowymi usługami z przedrostkiem Ambient zgodnie z innymi wytycznymi dotyczącymi interfejsu Ambients i Compose. (I33440)
  • Usuń stary moduł testu interfejsu użytkownika i jego wycinki (I3a7cb)

Wersja 1.0.0-alfa07

11 listopada 2020 roku

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

Nowe funkcje

Zmiany w interfejsie API

  • Adnotacja @UnionType została wycofana (I57cde)
  • Jako alternatywę można dodać parametr ProvideDefault, który pozwala określić dźwięki otoczenia. Można go użyć do określenia wartości otoczenia, które będą ustawiane tylko wtedy, gdy nie podano jeszcze wartości otoczenia. (Id6635, b/171024925)
  • Nazwa LaunchedTask została zmieniona na LaunchedEffect, aby zapewnić spójność z interfejsami SideEffect i DisposableEffect API. Parametr LaunchedEffect bez parametrów podmiotu jest niedozwolony, by zachęcić użytkowników do stosowania sprawdzonych metod. (Ifd3d4)
  • Applier ma teraz wywołania zwrotne onInitialChanges/onEndChanges, które są wywoływane, gdy usługa Composer rozpoczyna lub kończy wprowadzanie zmian do drzewa. W razie potrzeby można ich użyć do zbiorczego zarządzania zasobami. (Icf476)
  • Aplikacja Recomposer wymaga teraz elementu CoroutineContext na etapie budowy (Ic4610)
  • Zmiany w wewnętrznej implementacji SlotTable, które nie powinny mieć wpływu na publiczny interfejs API. (If9828)
  • Wycofane adaptery rxjava2, które nie przyjmują wartości początkowej, zostały usunięte (Idb72f)

Poprawki błędów

  • Fundacja.Text została wycofana i zastąpiona przez materiał.Text. Podstawowy, niezrozumiały interfejs API tekstu, który nie przetwarza wartości z motywu, znajdziesz na stronie androidx.compose.foundation.PodstawyText. (If64cb)
  • Pole BaseTextField zostało wycofane. Użyj interfejsu BasicTextField. (I896eb)
  • Kilka symboli związanych z układem zostało przeniesionych z androidx.compose.ui do androidx.compose.layout.ui. (I0fa98, b/170475424)

Wkład z zewnątrz

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

Wersja 1.0.0-alfa06

28 października 2020 r.

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

Zmiany w interfejsie API

  • Funkcja ponownego kompozytora to teraz element CompositionReference i prawidłowy element nadrzędny kompozycji. Funkcja jednoznacznego rekomponowania jest teraz wymagana w mniejszej liczbie miejsc. (I4036f)
  • Dodano odpowiedni interfejs API DisposableEffect do elementu SideEffect, który wypełnił rolę onCommit-with-params, ale z wymaganym parametrem onDispose.
    • Dodano interfejs API saveUpdatedState, który umożliwia publikowanie danych od momentu zmiany kompozycji do trwających lub długotrwałych procesów, takich jak DisposableEffects lub LaunchedTasks.
    • (Id50b9).
  • MutableVector korzysta teraz z funkcji RandomAccess (I85d73, b/170461551).
  • Dodano funkcję SideEffect composable służącą do stosowania efektów ubocznych kompozycji do obiektów zarządzanych przez kompozycję. SideEffect ma zastąpić obiekt kompozycyjny onCommit. (Ia77c2)
  • Nowy eksperymentalny interfejs API RestorableStateHolder. Umożliwia zapisanie stanu skonfigurowanego w poddrzewie za pomocą wartości [savedInstanceState] i [rememberSavedInstanceState], zanim będzie można je zutylizować, aby następnym razem można było utworzyć je w przywróconym stanie. (I66884, b/166586419)

Poprawki błędów

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

Wersja 1.0.0-alfa05

14 października 2020 r.

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

Zmiany w interfejsie API

  • Eksperymentalny modyfikator zawieszenia danych wejściowych Modifier.pointerInput (Ia77d2)
  • Wydajność przewijania leniwych kolumn/wiersza poprawia się dzięki zmniejszeniu ilości pracy w kompozycji podrzędnej przy każdym przewijaniu. Dodano nową metodę hasInvalidations() klasy Composition. Metoda hasPendingChanges() z systemu Recomposer została zmieniona na hasInvalidations() (Ib2f32, b/168293643, b/167972292, b/165028371).
  • Dodano interfejs API createState do uruchamiania koroncji z kompozycji, które aktualizują pojedynczą wartość State<T> w czasie (Id4a57)
  • Zmiana nazwy aplikacjilaunchInComposition na LaunchedTask, aby dopasować ją do wytycznych interfejsu Compose API (I99a8e)
  • Kolejność wywołań place() w niestandardowych układach określa teraz kolejność rysowania elementów podrzędnych (Ibc9f6)

Wersja 1.0.0-alfa04

1 października 2020 roku

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

Zmiany w interfejsie API

  • Dodano obiekt WłaścicielScope, który umożliwia zbieranie zakresów obserwacji i rysowanie, gdy przestaną być prawidłowe. (Ic4cf8)
  • Dodano interfejs API derStateOf API do tworzenia obiektów State na podstawie obliczeń, które mogą odczytywać inne obiekty State i wyciągać z nich dane (If758b).
  • Dodano interfejs API TestOnly dla SnapshotStateObserver (I6e2a9)

Poprawki błędów

  • Fundacja.Box została wycofana. Użyj parametru Foundation.layout.Box. (Ie5950, b/167680279)

Wersja 1.0.0-alfa03

16 września 2020 roku

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

Zmiany w interfejsie API

  • CompositionCoroutineScope nie korzysta już z metody MonotonicFrameClock. Wywołujący funkcje withFrameNanos powinny bezpośrednio importować funkcję najwyższego poziomu. (Icb642, b/166778123)

Poprawki błędów

  • Globalne funkcje testowe, takie jak onNode czy waitForIdle, zostały wycofane. Przejdź na ich nowe odpowiedniki, które są zdefiniowane za pomocą reguły ComposeTestRule (I7f45a).
  • launchInComposition nie uruchamia już niewysyłanych współuczestników (Ief6af, b/166486000)

Wersja 1.0.0-alfa02

2 września 2020 r.

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

Zmiany w interfejsie API

  • Dodaj interfejsy API snapshotFlow i withMutableSnapshot, aby wykorzystywać i tworzyć zmiany danych ze zrzutu. (I3e722)
  • Zmieniła się konwencja wywoływania funkcji kompozycyjnych. Jest to zmiana powodująca uszkodzenie danych binarnych. Aby działały z tą wersją wtyczki kompilatora compose, wszystkie biblioteki muszą zostać ponownie skompilowane.

    Ta zmiana nie spowoduje zmiany powodującej niezgodność na poziomie źródła, ponieważ zmienione interfejsy API są tylko interfejsami API kompilatora z wyraźną zgodą. (I7afd2, b/158123185)

  • Usunięto metody planowania z EmbeddingContext (I7b9be)

  • Funkcja onPreCommit została wycofana; funkcja onCommit działa teraz zgodnie z właściwością onPreCommit.

    Metody onCommit i onActive działają w tej samej strukturze choreografa, w której zmienia się kompozycja, a nie na początku kolejnego planu choreografa. (I70403)

Wersja 1.0.0-alfa01

26 sierpnia 2020 r.

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

Wersja 0.1.0-dev

Wersja 0.1.0-dev17

19 sierpnia 2020 r.

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

Zmiany w interfejsie API

  • Niestandardowe emisje mogą teraz deklarować, że co najmniej 1 z ich ustawień można pominąć i utworzyć ponownie niezależnie od nich. (Ibbd13).
  • Usunięto wycofane wywołania FrameManagera.

    Zmieniono wewnętrzne interfejsy API do tworzenia wiadomości, aby zmniejszyć obciążenie wynikające ze śledzenia obiektów stanu, takich jak mutableStateof() (I80ba6)

  • Funkcja kompozycyjna state { ... } została wycofana i wycofana z funkcji remember { mutableStateOf(...) }, aby zapewnić przejrzystość. Zmniejsza to ogólną powierzchnię interfejsu API i liczbę pojęć związanych z zarządzaniem stanem i dopasowywane do wzorca by mutableStateOf() na potrzeby przekazywania właściwości klasy. (Ia5727)

  • Parametr Flow.collectAsState określa teraz domyślnego dyspozytora na podstawie samej kompozycji, zamiast korzystać z domyślnego ustawienia Dispatchers.Main. (I9c1d9)

  • Awaria, gdy naprawiono element, który zapisuje stan używany w pętli for. Teraz stosowanie tego samego klucza w zapisanej instancjiState() jest dozwolone, więc interfejs API UiSavedStateRegistry został dostosowany do tego nowego wymogu (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561).

Poprawki błędów

  • Interfejs emitView został wycofany. W miarę możliwości używaj zasady AndroidView do generowania wyświetleń w ramach tworzenia wiadomości. Uwaga: bezpośrednie tworzenie widoków danych i grup widoków nie będzie obsługiwane w przyszłości, chyba że będą to liście w drzewie kompozycji – w sytuacji, gdy można to osiągnąć za pomocą AndroidView. (I29b1e, b/163871221)

Wersja 0.1.0-dev16

5 sierpnia 2020 r.

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

Zmiany w interfejsie API

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

    Ustawienie domyślne określające, czy nowa wartość przypisana do instancji mutableStateOf() jest uznawana za zmianę, teraz domyślnie przyjmuje użycie == zamiast ===.

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

    Implementacje ambientOf() i savedInstanceStateOf() używają mutableStateOf(), więc zostały zmienione tak, by były zgodne z mutableStateOf().

    Wykorzystanie równości strukturalnej w większym stopniu odpowiada oczekiwaniom deweloperów.

    Na przykład

    val state = mutableStateOf(1f)
    

    a po nim,

    state.value = 1f
    

    nie będą już brane pod uwagę za zmianę w state, a użycie state podczas tworzenia nie będzie już wymagało ponownego tworzenia.

    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 to miało 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 do wywołań mutableStateOf(), ambientOf() i savedInstanceStateOf() parametr zasady policy = referentialEqualityPolicy(). (Ic21a7).

  • Parametry Row i Column są teraz wbudowane, co znacznie zmniejsza koszty związane z ich używaniem. (I75c10)

Poprawki błędów

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

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

  • Interfejs Modifier.stateDraggable został całkowicie przerobiony i jego nazwa została zmieniona na Modifier.swipeable. Została wprowadzona nowa klasa PrzesuńableState, a DrawerState i DrawerState zostały zmodyfikowane w celu dziedziczenia z niej. [Modal/Down]DrawerLayout nie przyjmuje już parametru onStateChange. (I72332, b/148023068)

  • Funkcja Modifier.plus została wycofana. Zamiast niej użyj elementu Modifier.then. „Następnie” zawiera silniejszy sygnał porządkowania, ale zabrania też wpisywania Modifier.padding().background() + anotherModifier, co powoduje pęknięcie łańcucha i jest trudniejsze do odczytania (Iedd58, b/161529964).

  • Układ podrzędny został dodany. Jest to element podstawowy niskiego poziomu, który umożliwia utworzenie elementów podrzędnych podczas pomiaru, jeśli chcemy użyć wartości dostępnych później dla składu drzewa podrzędnego. Na przykład element WithConstraints nie jest implementowany przy użyciu układu podrzędnego. (I25cc8)

  • Nazwa Material FilledTextField została zmieniona na TextField, a podstawowe pole TextField zostało – na BaseTextField, aby ułatwić wyszukiwanie i używanie interfejsu API (Ia6242, b/155482676)

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

Wersja 0.1.0-dev15

22 lipca 2020 r.

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

Aktualizacja zależności

  • Aby korzystać z wersji tworzenia wiadomości w wersji 0.1.0-dev15, musisz zaktualizować zależności zgodnie z nowymi fragmentami kodu podanymi powyżej w sekcji Deklarowanie zależności.

Zmiany w interfejsie API

  • Adnotacja @Model została wycofana. Użyj atrybutów state i mutableStateOf jako alternatywne. Podjęliśmy decyzję o wycofaniu tej funkcji po szczegółowej dyskusji.

    Uzasadnienie

    Uzasadnienie obejmuje m.in.:

    • zmniejsza obszar interfejsu API i koncepcje, których musimy uczyć
    • Ściślej dopasowane do innych porównywalnych narzędzi (Swift UI, React, Flutter).
    • Odwracalna decyzja. W każdej chwili możemy przywrócić urządzenie @Model.
    • Eliminuje użycie małych liter i ułatwia udzielanie odpowiedzi na pytania dotyczące konfigurowania usługi @Model jako rzeczy, którymi musimy się zająć
    • @Model klas danych, równa się, kod skrótu itp.
    • Jak mogę ustawić niektóre właściwości jako „obserwowane”, a inne nie?
    • Jak określić równość strukturalną i referencyjną do zastosowania w obserwacji?
    • Ogranicza działanie magii w systemie. Zmniejszyłoby się prawdopodobieństwo, że ktoś założy, że system jest inteligentniejszy niż jest (np. potrafi odróżnić listę)
    • Sprawia, że szczegółowość obserwacji jest bardziej intuicyjna.
    • Poprawia refaktoryzację z właściwości zmienna -> klasy
    • potencjalnie stwarza możliwości wykonywania ręcznie przygotowanych optymalizacji dla poszczególnych stanów.
    • Rozwiązanie ściślej pasuje do reszty ekosystemu i zmniejsza niejasność co do wartości niezmiennych, czyli „uwzględniających stan zmienny”

    Uwagi dotyczące migracji

    Niemal wszystkie istniejące zastosowania funkcji @Model zostały w łatwy sposób przekształcone na jeden z dwóch sposobów. W przykładzie poniżej znajduje się klasa @Model z 2 właściwościami, która 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,
       onXChange={ p.x = it }
       onYChange={ p.y = it }
     )
    }
    

    Wersja alternatywna 1. Użyj aplikacji State<OriginalClass> i utwórz kopie.

    Takie podejście jest łatwiejsze dzięki klasom danych w Kotlin. Ogólnie rzecz biorąc, przekształć wszystkie właściwości var wcześniej we właściwości val klasy danych, użyj state zamiast remember i przypisz wartość stanu do sklonowanych kopii oryginału, korzystając z metody wygodnych klasy danych copy(...).

    Pamiętaj, że to podejście działa tylko wtedy, gdy jedyne mutacje tej klasy zostały wykonane w tym samym zakresie co instancja State. Jeśli klasa wewnętrznie mutuje się poza zakresem użycia i polegasz na tej obserwacji, kolejną metodą jest ta, której warto użyć.

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

    Alternatywnie 2. Użyj wartości mutableStateOf i przedstawicieli właściwości

    To podejście jest łatwiejsze dzięki przedstawicielom właściwości Kotlin i interfejsowi API mutableStateOf, który 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 z atrybutem mutableStateOf jako przedstawicieli. Ma to tę zaletę, że nie zmieni się w ogóle sposób wykorzystania klasy – zmieni się tylko jej wewnętrzna implementacja. Działanie nie jest jednak całkowicie identyczne z pierwotnym przykładem, ponieważ każda właściwość jest obecnie obserwowana lub subskrybowana oddzielnie, więc zmiany kompozycji widoczne po tej refaktoryzacji mogą być węższe (co jest korzystne).

    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,
       onXChange={ p.x = it }
       onYChange={ p.y = it }
     )
    }
    

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

  • Zmienia strategię generowania kodu kompilatora Compose. Przed tą zmianą kompilator composeing przekształcał wywołania na funkcje kompozycyjne. Dzięki tej zmianie przekształcamy treść funkcji kompozycyjnej i pozostawiamy stronę wywołania bez zmian (w większości przypadków).

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

    Powinna to być zmiana zgodną ze źródłem w przypadku całego korzystania z funkcji tworzenia. Dzięki tej zmianie większość użytkowników funkcji tworzenia wiadomości nie będzie musiała aktualizować żadnego kodu.

    Aby było to możliwe, 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 funkcja Composer, liczba całkowita w postaci klucza. Liczba całkowita służąca do rozpowszechniania metadanych w wywołaniach.

    Tworzenie przekształca teraz również domyślne argumenty w funkcję kompozycyjną. Odbywa się to bez wprowadzania dodatkowego syntetycznego przeciążenia samej funkcji, więc ta zmiana spowoduje definiowanie mniejszej liczby funkcji.

    Znane, zamierzone zmiany w zachowaniu wynikające z:

    1. Niektóre połączenia będą 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

    W ramach tych prac wprowadziliśmy kilka optymalizacji: 1. Wyniki porównania parametrów są przekazywane na wykresie wywołań do innych funkcji kompozycyjnych. Spowoduje to zmniejszenie liczby porównań w czasie działania, zmniejszenie rozmiaru tabeli przedziałów, a także większą liczbę pominięć funkcji kompozycyjnych, które nie były wcześniej pomijane. 2. Parametry, które są określane jako „statyczne” podczas kompilacji, nie są już porównywane ani przechowywane w środowisku wykonawczym. Zmniejsza to liczbę porównań i rozmiar tabeli przedziałów. 3. Struktura przepływu kontroli w treści funkcji jest używana do zminimalizowania liczby generowanych grup. Zmniejsza to rozmiar tabeli przedziałów i zmniejsza nakład pracy podczas działania środowiska wykonawczego. 4. Nieużywane parametry wysyłki i odbiorcy do funkcji nie są uwzględniane przy określaniu możliwości pominięcia funkcji, jeśli nie są używane w jej treści.

    Większość zmian powodujących niezgodność dotyczyła interfejsów API, na które kompilator bezpośrednio kieruje reklamy. Typowe zastosowania metody composeyfikacji nie ulegną zmianie: 1. Usługa Composer::startExpr została usunięta 2. Usunięto narzędzie Composer::endExpr 3. Funkcja Composer::call została wycofana. 4. Przeciążenia inne niż Vararg zostały usunięte z grupy key. Od tej pory używaj wersji vararg. 5. Adnotacja Pivotal została wycofana. Użyj w zamian key. 6. Wartość ScopeUpdateScope::updateScope została zmieniona tak, aby oczekiwała właściwości Function3 zamiast Function1. 7. Zaktualizowaliśmy funkcję restartableFunction i restartableFunctionN z dodatkowych parametrów czasu kompilacji (I60756, b/143464846)

  • Dodano argumenty sortWith i deleteRange do obiektu MutableVector (Icccf7).

  • Dodano implementacje domyślnych metod dla CompositionLifecycleObserver (I24289)

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

  • Dodano asMutableList() do MutableVector, aby umożliwić przekazywanie jej do publicznego interfejsu API bez konieczności kopiowania całej listy. (I298df)

  • Dodano funkcję saveCoroutineScope() w celu uzyskania zarządzanej usługi CoroutineScope w celu uruchamiania zadań w odpowiedzi na zdarzenia. (I0e264)

  • MutableVector to nowy zbiór, który nie zawiera żadnego standardowego interfejsu kolekcji. Ta kolekcja działa szybciej niż inne wymagania i powinna być wykorzystywana tylko w implementacjach wewnętrznych. (I8ebd6)

  • Tymczasowo usunięto zasady StableMutableList i StableMutableMap, aby uniknąć problemu w wersji narzędzia Kotlin Compose. Te interfejsy zostaną ponownie wprowadzone, gdy funkcja tworzenia wiadomości zostanie zaktualizowana do wersji Kotlin, w której ten problem nie występuje.

    Elementy SnapshotStateList i SnapshotStateMap są teraz publiczne, ale zostaną wycofane po przywróceniu StableMutableList i StableMutableMap. (Ia7769)

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

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

  • Nazwa funkcji RestartableFunction i powiązanych z nią interfejsów API została zmieniona na ComposableLambda itp. Te interfejsy API były celem kierowania tylko przez kompilator, więc nie powinno to normalnie wpływać na zgodność na poziomie źródła. Zmiana nazwy została dokonana głównie po to, żeby pokazać, co ta klasa jest lepsza, gdy wyświetla się w zrzutach stosu (I7eb25).

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

  • Ambient<T> to teraz @Stable, a nie @Immutable (I0b4bb).

  • Przed tą zmianą wtyczka kompilatora compose w łatwy sposób przechwytuje wywołania konstruktorów wewnątrz funkcji @Composable, jeśli istniała ona (I5205a, b/158123804)

  • Funkcja kompozycyjna ponownie nie jest już przydatną abstrakcją. Większość zmian powinna pojawić się w wyniku przypisania MutableState. W przypadku pozostałych elementów zalecamy użycie funkcji invalidate do aktywowania zmiany kompozycji bieżącego zakresu. (Ifc992)

  • Obserwacja nie jest już pożyteczną abstrakcją. Jeśli chcesz ją powielić, możesz to zrobić, tworząc funkcję kompozycyjną, która wykonuje parametr kompozycyjny lambda. Na przykład: @Composable fun Observe(body: @Composable () -> Unit) = body() (I40d37).

  • Znacznik @Direct został wycofany i zastąpiony przez @ComposableContract(restartable=false) (If4708)

  • Dodaliśmy adapter do niedawno wprowadzonego StateFlow, który umożliwia wstępne wypełnienie wartości początkowej, dzięki czemu zwracany stan nie może być wartością null (I61dd8, b/156233789).

  • Dodano przejściówkę do Flow. Przykład użycia: wartość val value by Flow.collectAsState() (If2198, b/153375923)

  • [Mutable]Operatorzy delegowani przez władze stanowe zostali przeniesieni do rozszerzeń, aby umożliwić optymalizowanie przekazywania dostępu w Kotlin w wersji 1.4. Aby nadal korzystać z metody by state { ... } lub by mutableStateOf(...), wywołujące muszą dodać importy. (I5312c)

  • Strona androidx.compose.ViewComposer została przeniesiona do androidx.ui.node.UiComposer androidx.compose.Emittable została usunięta. Komponent ComputeNode był nadmiarowy. androidx.compose.ViewAdapters został usunięty. Nie są już obsługiwane. Atrybut Compose.composeInto został wycofany. Użyj w zamian zasady setContent lub setViewContent. Parametr Compose.disposeComposition został wycofany. Użyj zamiast tego metody dispose w obiekcie Composition zwróconym przez setContent. Nazwa androidx.compose.Compose.subcomposeInto została przeniesiona do androidx.ui.core.subcomposeInto KomponentNode#emitInsertAt został zmieniony na KomponentNode#insertAt KomponentNode#emitRemoveAt został zmieniony na KomponentNode#removeAt KomponentNode#emitMode został zmieniony na KomponentNode#emitMode.

  • Zaktualizowano flagę ComposeFlags.COMPOSER_PARAM na true, co zmieni strategię generowania kodu wtyczki tworzenia wiadomości. Ogólnie rzecz biorąc, funkcje @Composable są generowane z dodatkowym parametrem syntetycznym, który jest przekazywany do kolejnych wywołań funkcji @Composable w celu prawidłowego zarządzania wykonywaniem w środowisku wykonawczym. Jest to znacząca zmiana, która powoduje uszkodzenie kodu binarnego, ale powinna zachować zgodność na poziomie źródła we wszystkich sankcjach dotyczących tworzenia wiadomości. (I7971c)

  • Najważniejsze zmiany w interfejsie API wygaszacza. Szczegółowe informacje znajdziesz w dzienniku i dokumentacji Ambient<T> (I4c7ee, b/143769776).

  • Dodano ui-livedata – nowy artefakt z adapterem do LiveData. Przykład użycia: val value by liveData.observeAsState() (Ie9e8c, b/150465596)

  • Adaptery RX bez podanej wartości początkowej zostały wycofane. Użycie wartości null nie zawsze jest najlepszym ustawieniem, np. jeśli masz listę, lepiej zacząć od pustej listy() lub innej rozsądnej wartości domyślnej (I00025, b/161348384).

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

  • savedInstanceState() może być teraz używany z typami z wartością null (I6847f, b/153532190)

  • Nowe listy SaveSaver() i mapSaver() ułatwiające zapisywanie niestandardowych obiektów oszczędzania (I8cf68, b/152331508)

  • Nowe funkcje: savedInstanceState() i saveInstanceState(). Są podobne do state() i save(), ale mają wbudowaną obsługę zapisanego stanu instancji (If1987, b/152025209)

Poprawki błędów

  • Nazwa etykiety runOnIdleCompose została zmieniona na runOnIdle (I83607)
  • Utworzono eksperymentalny interfejs API UkładNode (I4f2e9)
  • Metody androidx.ui.foundation.TextFieldValue i androidx.ui.input.EditorValue zostały wycofane. Obiekty TextField, FilledTextField i CoreTextField, które korzystają z 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ąpiliśmy go w Modifierie interfejsami API rozszerzenia DrawBackground. Zrefaktoryzowano stosowanie kolorów, pędzli i malarstwa do rysowania tła, aby zmniejszyć ścieżki w kodzie, oraz wyeliminowaliśmy konieczność tworzenia modyfikatora w ramach kompozycji. (I0343a)
  • Zaktualizowane interfejsy API tworzenia wyższego poziomu, które udostępniają obiekt Canvas na potrzeby korzystania z CanvasScope. Dzięki temu nie muszą oni utrzymywać własnych obiektów Paint. Klienci, którzy nadal potrzebują dostępu do Canvas, mogą użyć metody rozszerzenia pullCanvas, która udostępnia wywołanie zwrotne do wysyłania poleceń rysowania za pomocą bazowego obiektu Canvas. (I80afd)
  • Zmieniono interfejs API lambda na końcu WithConstraints. Zamiast 2 parametrów ma zakres odbiornika, który oprócz ograniczeń i układu DirectionDirections udostępnia właściwości minWidth, maxWidth, minHeight i maxHeight w Dp (I91b9a, b/149979702).
  • Dodano symetryczny modyfikator dopełnienia. (I39840)
  • Zaktualizowano wartości wrapContentWidth i wrapContentHeight, aby uzyskać wyrównanie pionowe lub poziome, a nie wyrównanie. Modyfikator grawitacji został zaktualizowany, aby akceptować wyrównanie w pionie lub poziomie. Wiersze, kolumny i stosy zostały zaktualizowane tak, by umożliwić obsługę niestandardowego ciągłego wyrównywania. (Ib0728)
  • Nazwa modułu ui-text została zmieniona na ui-text-core (I57dec)
  • Ulepsz interfejs DrawModifier API:
    • Utworzono zakres odbiornika pull() ContentDrawScope
    • Usunięto wszystkie parametry z funkcji pull()
    • DrawScope ma ten sam interfejs co poprzednia wersja CanvasScope
    • ContentDrawScope ma metodę pullContent() (Ibaced, b/152919067)
  • Interfejs ColoredRect został wycofany. Użyj w zamian zasady Box(Modifier.preferredSize(width, height).drawBackground(color)). (I499fa, b/152753731)
  • Zastąpiono operator plusa z funkcjami rozszerzeń fabrycznych (I225e4).
  • Użytkownicy RowScope i ColumnScope są teraz dostępni poza wierszami i kolumnami. (I3a641)
  • Zmieniono nazwę UkładuElastycznego na UkładWeight. Zmieniono nazwę ścisłego parametru na wypełnienie. (If4738)
  • WithConstraints pobiera parametr UkładDirection (I6d6f7)
  • Zmieniono nazwę tła na DrawBackground i ustawiliśmy je jako domyślne (Ia0bd3)
  • Zastąpiliśmy element ButtonStyle innymi funkcjami i usunęliśmy przeciążenie tekstu (ciągi). 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)

Wkład z zewnątrz

  • Usuń niepotrzebny interfejs API, taki jak Looper i Handler, z warstwy portingu Compose Runtime (I6847d).
  • Wycofaj atrybut Flow<T>.collectAsState() bez wartości początkowej. Użyj parametru StateFlow<T> lub przekaż określoną wartość początkową. (I63f98, b/157674865)