Utwórz środowisko wykonawcze

Podstawowe elementy składowe modelu programowania i zarządzania stanem w usłudze Compose oraz podstawowe środowisko wykonawcze, na które ma być kierowana wtyczka kompilatora Compose.
Najnowsza aktualizacja Wersja stabilna Kandydat do wydania Wersja Beta Wydanie alfa
4 września 2024 r. 1.7.0 - - 1.8.0-alfa01

Struktura

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

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

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

Deklarowanie zależności

Aby dodać zależność w Compose, musisz dodać repozytorium Google Maven do w projektach AI. Zapoznaj się z repozytorium Google Maven. .

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

Odlotowe

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

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

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

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

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

Opinia

Twoja opinia pomoże nam ulepszyć Jetpack. Daj nam znać, jeśli odkryjesz nowe problemy jak ulepszyć tę bibliotekę. Przyjrzyj się istniejące problemy w tej bibliotece, zanim utworzysz nową. Możesz zagłosować nad istniejącym problemem przez klikając przycisk gwiazdki.

Tworzenie nowego numeru

Zobacz dokumentację narzędzia Issue Tracker. .

Wersja 1.0 śledzenia środowiska wykonawczego

Wersja 1.0.0-beta01

29 listopada 2023 r.

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

Wersja 1.0.0-alpha05

15 listopada 2023 r.

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

Poprawki błędów

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

Wersja 1.0.0-alpha04

23 sierpnia 2023 r.

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

Nowe funkcje

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

Zmiany interfejsu API

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

Wersja 1.0.0-alpha02

8 lutego 2023 r.

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

Nowe funkcje

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

Wersja 1.0.0-alpha01

7 września 2022 roku

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

Nowe funkcje

  • androidx.compose.runtime:runtime-tracing to biblioteka, która (wraz z dostępem do narzędzi obsługujących tę funkcję) umożliwia rozszerzone śledzenie w aplikacji Compose. Ta wstępna wersja to 1.0.0-alfa01.

Wersja 1.8

Wersja 1.8.0-alpha01

4 września 2024 r.

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

Wersja 1.7

Wersja 1.7.0

4 września 2024 r.

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

Ważne zmiany od wersji 1.6.0

  • Dodano możliwość udostępnienia lokalnej kompozycji, która jest domyślnie obliczana na podstawie wartości innych lokalnych kompozycji (domyślnie przy użyciu funkcji compositionLocalWithComputedDefault()) lub przez podanie funkcji lambda do użycia w celu obliczenia wartości przy użyciu metody providesComputed zamiast provides.
  • Wartość lokalnej kompozycji można uzyskać za pomocą właściwości currentValue kompozycji dostępnej lokalnie z poziomu funkcji lambda i obliczając wartość. Jest ona używana zamiast wartości current, która jest dostępna tylko w funkcjach @Composable. (Iadbc0).
  • Nowo utworzone obiekty stanu są natychmiast dostępne z innych zrzutów, w tym z zrzutu globalnego, ze stanem początkowym. Żadne kolejne modyfikacje nie będą widoczne, dopóki nie zostanie zastosowany zrzut, w którym utworzono obiekt.
  • Początkowy stan obiektu mutableStateOf() i jego wersje podstawowe to wartość przekazywana jako parametr do funkcji mutableStateOf(). Początkowy stan elementów mutableStateListOf() i mutableStateMapOf() jest pusty.
  • Dodano obiekty Snapshot.isInSnapshot i Snapshot.PreexistingSnapshotId, które są używane do tego, aby obiekt stanu umożliwiał natychmiastowy dostęp z globalnego zrzutu po jego utworzeniu.
  • Obiekty stanu niestandardowego mogą obsługiwać natychmiastowy dostęp zgodnie ze wzorcem zmian wprowadzanych do wbudowanych obiektów zrzutu. (I84a17)
  • Włącz funkcję nonSkippingGroupOptimization w bibliotekach tworzenia wiadomości. Zwiększa to wydajność generowanego kodu wszystkich funkcji kompozycyjnych w Androidzie, których nie można ponownie uruchomić. W przyszłości planujemy włączyć tę funkcję jako domyślną. I(Acbc08)
  • Unieważnij elementy kompozycyjne lambda w podkompozycjach w tej samej ramce. (98301c)
  • Wywołuj wywołanie zwrotne pod numerem onRelease w tej samej kolejności jak w przypadku numeru onForgotten. (2CD790)
  • Włącz tryb silnego pomijania (ed1766)
  • Ustaw wartość currentCompoundHashKey jako unikalną w większej liczbie przypadków (d4a872)

Wersja 1.7.0-rc01

21 sierpnia 2024 r.

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

Wersja 1.7.0-beta07

7 sierpnia 2024 r.

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

Wersja 1.7.0-beta06

24 lipca 2024 r.

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

Wersja 1.7.0-beta05

10 lipca 2024 r.

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

Wersja 1.7.0-beta04

26 czerwca 2024 r.

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

Wersja 1.7.0-beta03

12 czerwca 2024 r.

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

Wersja 1.7.0-beta02

29 maja 2024 r.

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

Wersja 1.7.0-beta01

14 maja 2024 r.

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

Wersja 1.7.0-alpha08

1 maja 2024 r.

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

Wersja 1.7.0-alpha07

17 kwietnia 2024 r.

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

Nowe funkcje

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

Zmiany interfejsu API

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

Poprawki błędów

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

Wersja 1.7.0-alpha06

3 kwietnia 2024 r.

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

Poprawki błędów

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

Wersja 1.7.0-alpha05

20 marca 2024 r.

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

Poprawki błędów

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

Wersja 1.7.0-alpha04

6 marca 2024 roku

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

Ulepszenia wydajności

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

Wersja 1.7.0-alpha03

21 lutego 2024 r.

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

Zmiany interfejsu API

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

Ulepszenia wydajności

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

Wersja 1.7.0-alpha02

7 lutego 2024 r.

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

Poprawki błędów

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

Ulepszenia wydajności

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

Wersja 1.7.0-alpha01

24 stycznia 2024 r.

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

Optymalizacje skuteczności

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

Poprawki błędów

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

Wersja 1.6

Wersja 1.6.8

12 czerwca 2024 r.

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

Wersja 1.6.7

1 maja 2024 r.

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

Wersja 1.6.6

17 kwietnia 2024 r.

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

Wersja 1.6.5

3 kwietnia 2024 r.

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

Wersja 1.6.4

20 marca 2024 r.

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

Wersja 1.6.3

6 marca 2024 roku

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

Wersja 1.6.2

21 lutego 2024 r.

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

Wersja 1.6.1

7 lutego 2024 r.

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

Poprawki błędów

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

Wersja 1.6.0

24 stycznia 2024 r.

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

Ważne zmiany wprowadzone od wersji 1.5.0

Nowe funkcje

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

Optymalizacje skuteczności

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

Poprawki błędów

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

Wersja 1.6.0-rc01

10 stycznia 2024 r.

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

Wersja 1.6.0-beta03

13 grudnia 2023 r.

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

Wersja 1.6.0-beta02

29 listopada 2023 r.

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

Wersja 1.6.0-beta01

15 listopada 2023 r.

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

Zmiany interfejsu API

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

Poprawki błędów

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

Wersja 1.6.0-alpha08

18 października 2023 r.

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

Poprawki błędów

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

Wersja 1.6.0-alpha07

4 października 2023 roku

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

Zmiany interfejsu API

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

Wersja 1.6.0-alpha06

20 września 2023 r.

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

Wersja 1.6.0-alpha05

6 września 2023 r.

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

Wersja 1.6.0-alpha04

23 sierpnia 2023 r.

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

Nowe funkcje

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

Zmiany interfejsu API

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

Wersja 1.6.0-alpha03

9 sierpnia 2023 r.

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

Poprawki błędów

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

Wersja 1.6.0-alpha02

26 lipca 2023 r.

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

Nowe funkcje Większa wydajność

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

Zmiany interfejsu API

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

Poprawki błędów

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

Wersja 1.6.0-alpha01

21 czerwca 2023 r.

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

Poprawki błędów

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

Wersja 1.5

Wersja 1.5.4

18 października 2023 r.

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

Wersja 1.5.3

4 października 2023 roku

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

Wersja 1.5.2

27 września 2023 r.

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

Wersja 1.5.1

6 września 2023 r.

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

Wersja 1.5.0

9 sierpnia 2023 r.

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

Zmiany interfejsu API

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

Poprawki błędów

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

Ulepszenia wydajności

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

Wersja 1.5.0-rc01

26 lipca 2023 r.

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

Poprawki błędów

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

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

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

Wersja 1.5.0-beta03

28 czerwca 2023 r.

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

Poprawki błędów

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

Wersja 1.5.0-beta02

7 czerwca 2023 r.

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

Ulepszenia wydajności

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

Wersja 1.5.0-beta01

24 maja 2023 r.

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

Zmiany interfejsu API

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

Poprawki błędów

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

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

  • Dodano: Snapshot.isApplyObserverNotificationPending (I672a5)

Wersja 1.5.0-alpha04

10 maja 2023 r.

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

Zmiany interfejsu API

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

Poprawki błędów

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

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

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

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

Wersja 1.5.0-alpha03

19 kwietnia 2023 r.

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

Zmiany interfejsu API

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

Poprawki błędów

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

Wersja 1.5.0-alpha02

5 kwietnia 2023 r.

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

Nowe funkcje

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

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

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

Wersja 1.5.0-alpha01

22 marca 2023 r.

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

Nowe funkcje

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

Wersja 1.4

Wersja 1.4.3

3 maja 2023 r.

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

Wersja 1.4.2

19 kwietnia 2023 r.

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

Poprawki błędów

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

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

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

Wersja 1.4.1

5 kwietnia 2023 r.

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

Poprawki błędów

  • Napraw problem endToMarker() podczas kończenia grup węzłów. D71D980

Wersja 1.4.0

22 marca 2023 r.

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

Ważne zmiany wprowadzone od wersji 1.3.0

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

Poprawki błędów i Ulepszenia wydajności

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

Wersja 1.4.0-rc01

8 marca 2023 r.

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

Poprawki błędów

Wersja 1.4.0-beta02

22 lutego 2023 roku

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

Wersja 1.4.0-beta01

8 lutego 2023 r.

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

Zmiany interfejsu API

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

Poprawki błędów

  • Usuwanie pasków w lokalnych wyszukiwaniach kompozycji (62f66a)
  • Poprawa charakterystyki referencyjnej pamięci stanu zrzutu (dfb451)

Wersja 1.4.0-alpha05

25 stycznia 2023 r.

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

Zmiany interfejsu API

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

Wersja 1.4.0-alpha04

11 stycznia 2023 r.

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

Zmiany interfejsu API

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

Poprawki błędów

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

Wersja 1.4.0-alpha03

7 grudnia 2022 r.

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

Zmiany interfejsu API

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

Poprawki błędów

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

Wersja 1.4.0-alpha02

9 listopada 2022 r.

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

Wersja 1.4.0-alpha01

24 października 2022 r.

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

Zmiany interfejsu API

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

Wersja 1.3

Wersja 1.3.3

11 stycznia 2023 r.

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

  • Brak zmian od wersji 1.3.2

Wersja 1.3.2

7 grudnia 2022 r.

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

Poprawki błędów

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

Wersja 1.3.1

9 listopada 2022 r.

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

Wersja 1.3.0

24 października 2022 r.

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

Ważne zmiany wprowadzone od wersji 1.2.0

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

Śledzenie kompozycji

Interfejsy API Composable Reflection

Poprawki dotyczące środowiska wykonawczego

System zrzutów

Wersja 1.3.0-rc01

5 października 2022 r.

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

Poprawki błędów

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

Wersja 1.3.0-beta03

21 września 2022 r.

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

Wyjątkowa zmiana w działaniu

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

Wersja 1.3.0-beta02

7 września 2022 roku

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

Poprawki błędów

  • Zaktualizowany interfejs API (I64ca0)

Wersja 1.3.0-beta01

24 sierpnia 2022 r.

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

Zmiany interfejsu API

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

Wersja 1.3.0-alfa03

10 sierpnia 2022 r.

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

Wersja 1.3.0-alfa02

27 lipca 2022 roku

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

Zmiany interfejsu API

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

Wersja 1.3.0-alpha01

29 czerwca 2022 r.

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

Zmiany interfejsu API

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

Wersja 1.2

Wersja 1.2.1

10 sierpnia 2022 r.

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

Poprawki błędów

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

Wersja 1.2.0

27 lipca 2022 roku

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

Ważne zmiany od 1.1.0

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

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

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

  • Podsumowanie zmian znajdziesz poniżej:

Nowe funkcje w 1.2

Skuteczność w: 1.2

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

Wersja 1.2.0-rc03

29 czerwca 2022 r.

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

Poprawki błędów

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

Wersja 1.2.0-rc02

22 czerwca 2022 r.

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

Wersja 1.2.0-rc01

15 czerwca 2022 r.

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

Zmiany interfejsu API

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

Wersja 1.2.0-beta03

1 czerwca 2022 r.

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

Wersja 1.2.0-beta02

18 maja 2022 r.

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

Wersja 1.2.0-beta01

11 maja 2022 roku

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

Nowe funkcje

  • Pierwsza wersja beta 1.2.

Zmiany interfejsu API

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

Wersja 1.2.0-alpha08

20 kwietnia 2022 r.

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

Zmiany interfejsu API

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

Wersja 1.2.0-alpha07

6 kwietnia 2022 roku

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

Zmiany interfejsu API

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

Wersja 1.2.0-alpha06

23 marca 2022 r.

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

Wersja 1.2.0-alpha05

9 marca 2022 r.

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

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

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

Wersja 1.2.0-alfa04

23 lutego 2022 r.

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

Zmiany interfejsu API

  • Dodano ComposableTarget, ComposableTargetMarker i ComposableOpenTarget, który umożliwia raportowanie w czasie kompilacji funkcja kompozycyjna jest nazywana kierowaniem na aplikację, do której nie była potrzebna stworzonych z myślą o użytkownikach.

    W większości przypadków adnotacje można wywnioskować na podstawie sposobu tworzenia kompilatora, więc bezpośrednie używanie tych adnotacji powinno być rzadkie . Przypadki, których nie można wywnioskować, to na przykład utworzenie za pomocą abstrakcyjnego narzędzia kompozycyjnego (takiego jak metod interfejsu), pola lub zmienne globalne, które są kompozycyjne lambda (wnioskowane zmienne i parametry lokalne), lub gdy używasz funkcji ComposeNode lub powiązanych funkcji kompozycyjnych.

    W przypadku aplikacji niestandardowych funkcje kompozycyjne wywołujące ComposeNode lub ReusableComposeNode muszą dodać CompoableTarget adnotacji dla funkcji i dowolnych kompozycyjne typy parametrów lambda. Zalecane jest jednak aby utworzyć adnotację z adnotacją ComposableTargetMarker, a oznaczona adnotacja będzie używana zamiast ComposableTarget. Adnotacja kompozycyjna oznaczony za pomocą atrybutu ComposableTargetMarker jest odpowiednikiem funkcji ComposbleTarget z pełną i jednoznaczną nazwą atrybutu jako parametr aplikacji. Na przykład za pomocą funkcji ComposableTargetMarker zobacz: anroidx.compose.ui.UiComposable. (I38f11)

Wersja 1.2.0-alfa03

9 lutego 2022 r.

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

Zmiany interfejsu API

  • Dodano funkcję movableContentOf, która konwertuje funkcję kompozycyjną do funkcji lambda zmieniającej jej stan, oraz do odpowiednich węzłów. do dowolnej nowej lokalizacji. Gdy poprzednie połączenie zostanie zakończone kompozycja, stan zostaje tymczasowo zachowywany, a w przypadku nowego wywołania do lambda wchodzi do kompozycji, a potem do stanu, węzłów, są przenoszone do lokalizacji nowego wywołania. Jeśli nie ma nowego połączenia Po dodaniu stan zostaje trwale usunięty i pamiętaj, że obserwatorzy powiadomienia.

    Jeśli funkcja lambda movableContentOf jest wywoływana wiele razy w tym samym dla każdego wywołania są tworzone nowy stan oraz węzły, gdy opuszczają kompozycję i dochodzą nowe wywołania, stan zostaje przeniesiony od pierwszego dzwonienia po wprowadzanie połączeń w kolejności, w jakiej są wywoływane. Wszystkie stany, w których nie zgłoszono praw do nowych połączeń, zostaną usunięte na stałe. (IB4850)

  • Dodaliśmy do kompozycji interfejs API śledzenia, aby umożliwić narzędziom do pozwalają bardziej szczegółowo śledzić funkcje kompozycyjne. Kompilator teraz generuje wywołania interfejsu API śledzenia, które obejmują źródło i informacjami o nich. (Ib0eb5)

    Aby usunąć te połączenia i powiązane z nimi źródło informacji z kompilacji wersji, dodaj tę regułę ProGuard:

      -assumenosideeffects public class androidx.compose.runtime.ComposerKt {
          boolean isTraceInProgress();
          void traceEventStart(int,java.lang.String);
          void traceEventEnd();
      }
    
  • Dodaj atrybut InternalComposeScope, który nadaje narzędziom możliwość aby zidentyfikować kompozycję podczas rekompozycji. (I07a3f)

Wersja 1.2.0-alfa02

26 stycznia 2022 r.

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

Wersja 1.2.0-alpha01

12 stycznia 2022 r.

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

Zmiany interfejsu API

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

Aktualizacje zależności

  • Teraz zależy od Kotlin 1.6.10.

Wersja 1.1

Wersja 1.1.1

23 lutego 2022 r.

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

Poprawki błędów

  • Napraw NullPointerException pod adresem androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList (aosp/1947059, b/206677462)
  • Naprawianie awarii spowodowanej przez zawartość schowka przy odczytywaniu z do schowka na Androidzie. (I06020, b/197769306)
  • Poprawiono RTL w LazyVerticalGrid (aosp/1931080, b/207510535)

Wersja 1.1.0

9 lutego 2022 r.

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

Ważne zmiany wprowadzone od wersji 1.0.0

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

Wersja 1.1.0-rc03

26 stycznia 2022 r.

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

Poprawki błędów

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

Wersja 1.1.0-rc01

15 grudnia 2021 roku

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

Wersja 1.1.0-beta04

1 grudnia 2021 r.

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

Nowe funkcje

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

Wersja 1.1.0-beta03

17 listopada 2021 r.

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

Wersja 1.1.0-beta02

3 listopada 2021 r.

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

Zmiany interfejsu API

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

Wersja 1.1.0-beta01

27 października 2021 roku

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

Wersja 1.1.0-alpha06

13 października 2021 r.

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

Zmiany interfejsu API

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

Wersja 1.1.0-alpha05

29 września 2021 r.

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

Wersja 1.1.0-alfa04

15 września 2021 r.

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

Wersja 1.1.0-alfa03

1 września 2021 roku

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

Nowe funkcje

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

Wersja 1.1.0-alfa02

18 sierpnia 2021 r.

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

Wersja 1.1.0-alpha01

4 sierpnia 2021 r.

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

Wersja 1.0

Wersja 1.0.5

3 listopada 2021 r.

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

Poprawki błędów

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

Wersja 1.0.4

13 października 2021 r.

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

Aktualizacje zależności

  • Zaktualizowano na podstawie usługi Kotlin 1.5.31

Wersja 1.0.3

29 września 2021 r.

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

Aktualizacje zależności

  • Zaktualizowano na podstawie usługi Kotlin 1.5.30

Wersja 1.0.2

1 września 2021 roku

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

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

Wersja 1.0.1

4 sierpnia 2021 r.

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

Aktualizacje zależności

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

Wersja 1.0.0

28 lipca 2021 roku

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

Główne funkcje 1.0.0

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

Znane problemy

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

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

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

Wersja 1.0.0-rc02

14 lipca 2021 roku

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

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

Wersja 1.0.0-rc01

1 lipca 2021 r.

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

Wersja 1.0.0-beta09

16 czerwca 2021 r.

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

Dodane reguły profilu

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

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

Co to są reguły profilu?

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

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

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

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

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

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

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

Do czego służą reguły?

  • Metoda z flagą H wskazuje, że jest ona popularna. i należy ją skompilować z wyprzedzeniem.

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

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

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

Jak to działa?

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

Wersja 1.0.0-beta08

2 czerwca 2021 r.

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

Zmiany interfejsu API

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

Wersja 1.0.0-beta07

18 maja 2021 r.

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

Zmiany interfejsu API

  • Dodaliśmy nowe interfejsy API kompilatora tworzenia wiadomości, które umożliwiają informacje o źródle wygenerowane przez kompilator usunięte podczas minifikacji źródła. (Ia34e6).
  • Wprowadza funkcję ReusableContent, która będzie próbowała ponownie wykorzystać atrybut węzłów w treści, zamiast zastępować je, gdy klucz została zmieniona. Po zmianie klucza poprzednie wartości w argumencie tabela przedziałów dla treści jest ignorowana z wyjątkiem tagu wygenerowane węzły i wartości użyte do zaktualizowania węzłów.

    Wstawia funkcję ReusableComposeNode, która będzie ponownie używać węzła emitowane, zamiast zastępować je, tak jak ma to miejsce w przypadku ComposeNode. (I1dd86)

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

Poprawki błędów

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

Wersja 1.0.0-beta06

5 maja 2021 roku

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

Zmiany interfejsu API

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

Wersja 1.0.0-beta05

21 kwietnia 2021 r.

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

Zmiany interfejsu API

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

Poprawki błędów

  • pliki AndroidManifest z komponentów ui-test-manifest oraz Narzędzie ui-tooling-data jest teraz zgodne z Androidem 12 (I6f9de, b/184718994)

Wersja 1.0.0-beta04

7 kwietnia 2021 r.

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

Poprawki błędów

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

    Oto przykład:

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

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

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

Wersja 1.0.0-beta03

24 marca 2021 r.

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

Zmiany interfejsu API

  • Interfejs DefaultMonotonicFrameClock został wycofany. Łączę withFrameNanos lub Recomposer.runRecomposeAndApplyChanges bez MonotonicFrameClock wyrzuci teraz IllegalStateException. (I4eb0d).

Wersja 1.0.0-beta02

10 marca 2021 r.

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

Poprawki błędów

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

Wersja 1.0.0-beta01

24 lutego 2021 r.

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

To jest pierwsza wersja beta Compose 1.0.0.

Zmiany interfejsu API

  • Dodaj Recomposer.runRecomposeConcurrentlyAndApplyChanges eksperymentalny interfejs API do ponownego komponowania nieprawidłowych kompozycji poza główną w pętli obrazu. (I342d0)
  • Wszystkie elementy kompozycyjne oznaczone symbolem @ReadOnlyComposable są teraz sprawdzane podczas kompilacji podczas kompilowania, aby zagwarantować, że wywołują wyłącznie inne elementy @ReadOnlyComposables (I58961)
  • defaultFactory dla compositionLocalOf i Parametr staticCompositionLocalOf jest teraz wymagany zamiast opcjonalnie.

    Ta zmiana usuwa potencjalny błąd typu dla wartości niepustej bez domyślnych ustawień fabrycznych. Wcześniej to zwróciłoby wartość null dla typu niedopuszczającego wartości null.

    W przypadku typów dopuszczających wartości null zalecamy podanie parametru { null } jako domyślnego fabryki.

    Nie zalecamy używania zasobów lokalnych z typami niedopuszczającymi wartości null, chyba że można określić rozsądną wartość domyślną. Jeśli nie istnieje rozsądne ustawienie domyślne, funkcja lambda defaultFactory powinna zgłosić wyjątek. Jednak zrobić wyjątek oznacza, że konsumenci lokalnie korzystają pośrednia zależność od podanego źródła, która nie jest egzekwowana według systemu typów. (Ifbd2a).

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

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

  • Nazwa dostawców została zmieniona na CompositionLocalProvider

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

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

  • W interfejsie Material API wprowadzono te zmiany:

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

Wersja 1.0.0-alfa12

10 lutego 2021 r.

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

Zmiany interfejsu API

  • Usunięto obsługę grup widoków danych z UiApplier. Wycofane elementy kompozycyjne emitView zostały usunięte. (Ifb214).
  • Zmieniono nazwę CompositionReference na CompositionContext (I53fcb).
  • Element KomponentActivity.setContent został przeniesiony do androidx.activity.compose.setContent w . (Icf416).
  • Interfejs Snapshot API został zaktualizowany, aby zwiększyć spójność z wytyczne dotyczące interfejsu API oraz ukrywanie wewnętrznych klas implementacji. z publicznego interfejsu API. (Id9e32)
  • Zmieniono nazwy dźwięków otoczenia, tak aby pasowały do otoczenia -> Zmiana nazwy elementu CompositionLocal. Lokalizatory nosiły wcześniej nazwę AmbientFoo, a teraz CompositionLocals – LocalFoo. (I2d55d)
  • Zmieniono nazwę Ambient na CompositionLocal i Ambient of / staticAmbientOf odpowiednio na buildLocalOf / staticCompositionLocalOf. Dzięki tej zmianie staje się on bardziej jasny dla celu użycia funkcji CompositionLocal, czyli mechanizmu podawania / pobierania wartości lokalnych dla kompozycji. Instancje CompositionLocal powinny być poprzedzone ciągiem Local, na przykład val LocalFoo = createLocalOf { Foo() }. (IA55b6).
  • TakeMutableSnapshot i TakeSnapshot zostały przeniesione do metod towarzyszących Snapshot. (I91f19)
  • Funkcja @ComposableContract została wycofana i zastąpiona 3 bardziej szczegółowymi adnotacjami.

    @ComposableContract(restartable = false) zmienia nazwę na @NonRestartableComposable @ComposableContract(readonly = true) jest teraz @ReadOnlyComposable @ComposableContract(preventCapture = true) została zmieniona na @DisallowComposableCalls Użytkownik @ComposableContract(tracked = true) został usunięty. (I60a9D)

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

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

  • Rekompozycje można teraz zamknąć. Zamknięte ponownie kompozycje kontynuować ponowne kompozycje, aż kogutyny podrzędne kompozycji zostaną zakończone. Nazwa polecenia Recomposer.shutDown została zmieniona na anulowanie, aby kontrastować z zamknięciem. (IB6d76)

  • Artefakt compose:runtime-dispatch został wycofany. MonotonicFrameClock można teraz znaleźć w poleceniach compose:runtime Aplikację AndroidUiDispatcher znajdziesz w polecenia compose:ui. (IB5c36)

  • Interfejs API, na który kierowana jest wtyczka kompilatora Compose została zmieniona tak, aby używała interfejsu zamiast konkretnej klasy. Interfejs nie będzie już używał type.

    To jest zmiana wewnętrzna, która nie powinna mieć wpływu na źródło jest to zmiana powodująca niezgodność kodu binarnego. (I3b922, b/169406779)

  • Wprowadzono SnapshotMutableState (Icfd03)

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

  • Usunięto polecenie Recomposer.current(). [Abstract]ComposeView teraz domyślnie tworzone są leniwie, ograniczone do okna Rekompozycje oparte na metodzie ViewTreeLifecycleOwner dla okna. Zmiana kompozycji Znaczniki animacji oparte na mechanizmie withFrameNanos są wstrzymywane, a cykl życia hosta jest wstrzymywany. zatrzymuje się. (I38e11)

  • Recomposer.runningRecomposers oferuje teraz globalny mechanizm StateFlow tylko do odczytu, aby obserwować stan kompozycji w cały proces. Wolę ten interfejs API od Recomposer.current(), który jest teraz wycofane. (If8ebe).

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

Wersja 1.0.0-alfa11

28 stycznia 2021 roku

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

Zmiany interfejsu API

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

    RememberObserver zastępuje CompositionLifecycleObserver ze zmodyfikowaną semantyką i o zmienionych nazwach. Przejście na nowy interfejs API może odbywać się automatycznie w przypadku obiektów, które są zapamiętywane tylko raz, czyli są i nadal są co jest zalecane. Jeśli jednak plik referencyjny był zapamiętane więcej niż raz w kompozycji onRemembered to nazwa dla każdego odwołania, w którym element onEnter jest wywoływany tylko raz. onEnter została wywołana wielokrotnie, jeśli obiekt był używany w podkompozycjach, takich jak WithConstraints i Scaffold, tworząc singiel onEnter gwarancja połączenia jest niewiarygodna i została usunięta w przypadku RememberObserver

    Funkcja RememberObserver dodaje metodę onAbandoned, która jest wywoływana, jeśli Z powodowanego wywołania zwrotnego jest zwracana RememberObserver instancja do remember, ale nie został zapamiętany w stanie kompozycji i dlatego nigdy nie zostanie wywołana funkcja onRemembered. Może to spowodować występują, jeśli wyjątek zakończy kompozycję przed ukończeniem lub kompozycja jest odrzucana, ponieważ stan generuje kompozycja dla nie jest już aktualna lub w inny sposób przestaje być aktualna niezbędną. Jeśli wystąpienie RememberObserver następujące po singlu powyższa rekomendacja pozwala śledzić zasób zewnętrzny onForgotten i onAbandoned wskazują, że nie jest już potrzebny. Jeśli obiekt śledzi pracę rozpoczęte lub przydzielone zasoby w: onRemembered, onAbandoned można zignorować, ponieważ nie zostanie wywołana, jeśli onRemembered jest . (I02c36)

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

Poprawki błędów

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

Wersja 1.0.0-alpha10

13 stycznia 2021 r.

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

Zmiana niezbędna

  • Zmiana struktury wewnętrznego kompilatora Interfejs API umożliwia grupowanie zmian w wygenerowanych węzłach w wyniku kompozycji w „zastosuj zmiany” faza kompozycji, po wszystkich funkcjach @Composable .

    To fragment treści behawioralnych która może mieć wpływ na kod aplikacji jako węzłów wewnętrznych i eksperymentalnych interfejsów API po wprowadzeniu zmian. zastosowano. Zwykle można temu zapobiec, kodu z takimi zależnościami w SideEffect kompozycyjny, aby opóźnić wykonanie do czasu utworzenia węzłów. zainicjowano. (I018da)

Zmiany interfejsu API

  • Dodaliśmy sposób śledzenia, czy funkcja ponownego komponowania zastosowała zmiany. (I1b3e2).
  • Rozwiń interfejsy API ComposeView, by umożliwić recykling widoki oparte na kompozycji, pozostawianie kompozycji w celu ich ponownego utworzenia; później. Dodaj interfejsy API do instalowania i wykrywania rekompozytorów ograniczonych do okna i CompositionReferences do tworzenia kompozycji podrzędnych.

    Dodanie strategii ViewCompositionStrategy, która umożliwia skonfigurowanie usuwania kompozycji [Abstract]ComposeViews; domyślne działanie to usunięcie odłączenie okna. (I860ab)

Poprawki błędów

  • Funkcja ponownego komponowania ujawnia teraz przepływ w bieżącym stanie, co pozwala monitorowania jego aktywności i aktywności związanych z nimi skutków. (Ifb2b9).
  • Dostęp do natywnego zdarzenia keyEvent można teraz uzyskać przez keyEvent.nativeKeyEvent (I87c57, b/173086397)

Wersja 1.0.0-alpha09

16 grudnia 2020 roku

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

Zmiany interfejsu API

  • Usunięto interfejsy SlotTable, SlotReader i SlotWriter z publicznego interfejsu API. Zostały one oznaczone jako Poprzednio InternalComposeAPI. Teraz są wewnętrzne do modułu tworzenia wiadomości.

    Atrybuty CompositionData i CompositionGroup zostały dodane jako zamiennik interfejsu ui-tooling API do wyodrębniania informacje o kompozycji. Są one publiczne, ale nie przeznaczone do użytku poza interfejsem ui-tooling API, ponieważ zapewniają nieprzetworzone informacje interpretowane przez interfejs ui-tooling API (I31a9c);

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

  • Zmieniono interfejs Applier, aby uprościć buduj drzewa od dołu, a nie od góry.

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

    Dodano nową metodę: insertBottomUp().

    Stosowany sposób wstawia węzły do edytowanego drzewa przy użyciu insertTopDown() lub insertBottomUp() w zależności od który jest skuteczniejszy.

    Niektóre drzewa, takie jak LayoutNode i View, są znacznie większe efektywniej tworzyć reklamy od dołu do góry niż od góry. Przed tą zmianą trzeba było wdrożyć od dołu stos wkładek, była skopiowana do każdego podmiotu, który wymagał przeprowadzenia oddolnej i zwiększania wydajności. W związku z tą zmianą Applier zastępuje insertBottomUp(), aby utworzyć drzewo od dołu insertTopDown(), aby utworzyć drzewo od góry. (Icbdc2)

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

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

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

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

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

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

Poprawki błędów

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

Wersja 1.0.0-alpha08

Grudzień 2, 2020

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

Zmiany interfejsu API

  • Dodano sprawdzanie nazw i pozycji parametrów kompozycyjnych lambda w celu sprawdzenia spójności z wytycznymi dotyczącymi tworzenia wiadomości. Zgodnie ze sprawdzaniem lintowania i wskazówkami przenieśliśmy też niektóre interfejsy API z użyciem nazwy children jako nazwy końcowej lambdy do content. (Iec48e).
  • Recomposer nie akceptuje już elementu EmbeddingContext; wymagane zależności harmonogramu są pobierane z efektu EffectsCoroutineContext. Interfejs FrameManager został wycofany. integracje platformy powinny zostać zainicjowane własnej globalnej obsługi zrzutów dysku. (I02369)
  • Nazwa funkcji RestorableStateHolder.withRestorableState została zmieniona na RestorableStateProvider (I66640).

Poprawki błędów

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

Wersja 1.0.0-alpha07

11 listopada 2020 roku

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

Nowe funkcje

Zmiany interfejsu API

  • Adnotacja @UnionType została wycofana (I57cde)
  • Jako alternatywę dla określania ustawień otoczenia dodano parametr ProvideDefault. Można go używać do określania wartości otoczenia, które będą ustawiane tylko wtedy, gdy nie podano jeszcze żadnej wartości otoczenia. (Id6635, b/171024925)
  • Nazwa LaunchedTask została zmieniona na LaunchedEffect, aby zachować spójność w interfejsach API SideEffect i DiposableEffect. LaunchedEffect bez Parametry tematu są niedozwolone w celu promowania sprawdzonych metod. (Ifd3d4).
  • Wnioskujący ma teraz wywołania zwrotne onAfterChanges/onEndChanges, które są jest wywoływana, gdy narzędzie Composer rozpocznie lub skończy wprowadzać zmiany w drzewie. W razie potrzeby mogą one służyć do zarządzania zasobami wsadowymi. (Icf476).
  • Funkcja rekompozycji wymaga teraz CoroutineContext podczas budowy (Ic4610)
  • Zmiany w wewnętrznej implementacji SlotTable, które nie powinno mieć wpływu na publiczny interfejs API. (If9828).
  • Usunięto wycofane adaptery rxjava2, które nie przyjmują wartości początkowej (Idb72f).

Poprawki błędów

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

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

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

Wersja 1.0.0-alpha06

28 października 2020 r.

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

Zmiany interfejsu API

  • Funkcja Rekompozytor jest teraz elementem Kompozycji i prawidłowym elementu nadrzędnego kompozycji. Bezpośrednie przekomponowanie jest teraz wymagane w mniejszej liczbie miejsc. (I4036f)
  • Dodano odpowiednik interfejsu API DisposableEffect do SideEffect, wypełnianie. z rolą onCommit-with-params, ale z wymaganą rolą onDispose.
    • Dodano interfejs API sendUpdatedState w celu publikowania danych ze zmiany kompozycji trwające lub długotrwałe procesy, takie jak DisposableEffects czy LaunchedTasks.
    • (Id50b9).
  • MutableVector ma teraz funkcję RandomAccess (I85d73, b/170461551)
  • Dodano kompozycję do tworzenia efektów ubocznych funkcji SideEffect z kompozycją do obiektów zarządzanych przez tę kompozycję. Obecny efekt SideEffect ma zastąpić element kompozycyjny onCommit. (Ia77c2).
  • Nowa eksperymentalna api RestorableStateHolder. Umożliwia zapisanie stanu zdefiniowanego za pomocą parametrów [savedInstanceState] i [rememberSavedInstanceState] w drzewie podrzędnym przed jego usunięciem, co umożliwi jego ponowne utworzenie następnym razem z przywróconym stanem. (I66884, b/166586419)

Poprawki błędów

  • włącz przejścia w zasadzie ComposeTestRule; usuń opcję włącz migający kursor w ComposeTestRule. (If0de3).

Wersja 1.0.0-alpha05

14 października 2020 r.

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

Zmiany interfejsu API

  • eksperymentalny modyfikator zawieszenia danych wejściowych (Ia77d2),
  • Wydajność przewijania w przypadku LazyColumn/Row zwiększa się, ponieważ podczas każdego przewijania ma mniej pracy w subkompozycji. Dodano nową metodę hasInvalidations() dla klasy kompozycji. Nazwa metody hasPendingChanges() z Recomposer została zmieniona na hasInvalidations() (Ib2f32, b/168293643, b/167972292, b/165028371)
  • Dodaj interfejs API ManufacturerState do uruchamiania współrzędnych z kompozycji które na przestrzeni czasu aktualizują pojedynczą wartość State<T> (Id4a57)
  • Parametr launchInComposition został zmieniony na LaunchedTask, aby pasować do funkcji Compose Wytyczne dotyczące interfejsu API (I99a8e)
  • Kolejność wywołań funkcji Place() w układach niestandardowych określa teraz kolejność rysowania elementów podrzędnych (Ibc9f6).

Wersja 1.0.0-alpha04

1 października 2020 roku

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

Zmiany interfejsu API

  • Dodano element WłaścicielScope, aby umożliwić zbieranie tych danych: a nawet lunety obserwacyjne układów i rysunków, stracił ważność. (Ic4cf8).
  • Dodano interfejs devStateOf API, aby tworzyć obiekty stanu na podstawie obliczeń, które mogą odczytywać inne obiekty State (i z nich korzystać) – If758b.
  • Dodano interfejs TestOnly API dla SnapshotStateObserver (I6e2a9).

Poprawki błędów

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

Wersja 1.0.0-alpha03

16 września 2020 roku

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

Zmiany interfejsu API

  • CompositionCoroutineScope nie ma już implementacji MonotonicFrameClock Rozmówcy z numeru withFrameNanos powinni zaimportować rozmowy z najwyższego poziomu bezpośrednio. (Icb642, b/166778123)

Poprawki błędów

  • Funkcje testowania globalnego, takie jak onNode czy waitForIdle, są teraz wycofane, przejdź na ich nowe odpowiedniki zdefiniowane w ComposeTestRule (I7f45a)
  • launchInComposition nie uruchamia już nierozstrzygniętych kompetencji (Ief6af, b/166486000)

Wersja 1.0.0-alpha02

Wrzesień 2, 2020

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

Zmiany interfejsu API

  • Dodaj interfejsy API snapshotFlow i withMutableSnapshot do wykorzystania i generowanie zmian w danych ze zrzutu. (I3e722)
  • Konwencja wywoływania funkcji kompozycyjnych ma została zmieniona. To jest zmiana binarna, która powoduje niezgodność. Wszystkie biblioteki muszą być skompilować ponownie, by współpracował z tą wersją wtyczki kompilatora compose.

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

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

  • Funkcja onPreCommit została wycofana; onCommit ma teraz zasób onPreCommit zachowanie użytkownika.

    onCommit i onActive są teraz uruchamiane w tej samej ramce Choreografa, zmiany kompozycji, które nastąpiły na początku, a nie na początku, kolejnego kadru choreografa. (I70403).

Wersja 1.0.0-alpha01

26 sierpnia 2020 r.

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

Wersja 0.1.0-dev

Wersja 0.1.0-dev17

19 sierpnia 2020 r.

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

Zmiany interfejsu API

  • Niestandardowe emisji mogą teraz zadeklarować, że co najmniej jeden z detektorów można pominąć i ponownie skomponować niezależnie od emisji. (Ibbd13).
  • Usunięto wycofane wywołania FrameManager.

    Wewnętrzne interfejsy API do tworzenia wiadomości zostały zmienione, by zmniejszyć ilość śledzenie obiektów stanu, takich jak mutableStateof() (I80ba6)

  • Funkcja kompozycyjna state { ... } została wycofana i zastąpiona wyraźne wezwania do działania (remember { mutableStateOf(...) }) w celu uniknięcia wątpliwości. Zmniejsza to ogólną powierzchnię interfejsu API i liczbę koncepcji stanu management i pasuje do wzorca by mutableStateOf() klasy przekazania usługi. (IA5727).

  • Flow.collectAsState wskazuje teraz domyślnego dyspozytora samą kompozycję, a nie domyślnie na Dispatchers.Main. (I9c1d9).

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

Poprawki błędów

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

Wersja 0.1.0-dev16

5 sierpnia 2020 r.

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

Zmiany interfejsu API

  • Domyślna zasada mutacji mutableStateOf(), ambientOf() i savedInstanceStateOf() zostały zmienione na structuralEqualityPolicy() zamiast referentialEqualityPolicy().

    Wartość domyślna określająca, czy nowa wartość przypisana do Instancja mutableStateOf() jest uznawana za zmianę, której domyślna wartość to za pomocą funkcji == zamiast ===.

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

    ambientOf() i savedInstanceStateOf() używają mutableStateOf() w ich implementacjach, więc zostały zmienione tak, by były zgodne mutableStateOf()

    Użycie równości strukturalnej ściślej odpowiada wartości deweloperskiej z oczekiwaniami.

    Na przykład

    val state = mutableStateOf(1f)
    

    , a po nim:

    state.value = 1f
    

    nie będą już brane pod uwagę jako zmiana w systemie state oraz zastosowania state podczas tworzenia kompozycji nie będzie już trzeba ponownie komponować.

    Jest to zmiana niekorzystna, ale w większości przypadków (na przykład podczas używania funkcji klas, które nie zastępują właściwości equals()), nie będzie miał parametru zauważalny wpływ na aplikację.

    Klasy, które zastępują equals(), takie jak klasy data, może zauważyć pogorszenie wydajności, ponieważ stosowane przez nich metody equals() są teraz domyślnie wywoływane po przypisaniu do funkcji mutableStateOf().

    Poprzednie działanie można przywrócić, dodając zasadę parametr policy = referentialEqualityPolicy() wywołujący funkcję mutableStateOf(), ambientOf() i savedInstanceStateOf(). (IC21a7).

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

Poprawki błędów

  • Metoda setViewContent została wycofana. Zamiast niego należy użyć parametru setContent. (I7e497, b/160335130)
  • Dodano MonotonicFrameAnimationClock, który pozwala na Funkcja MonotonicFrameClock jako funkcja AnimationClockObservable w celu wypełnienia luki między nowymi zegarami opartymi na współprogramach a interfejsami API, które nadal używają zegary z wywołaniem zwrotnym.

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

  • Modifier.stateDraggable został całkowicie przerobiony i jego nazwa została zmieniona na Modifier.swipeable. wprowadziliśmy nową klasę PrzesuńableState, Elementy DrawerState i bottomDrawerState zostały zmodyfikowane tak, aby mogły je dziedziczyć. [Modal/bottom]DrawerLayout nie przyjmuje już parametru onStateChange. (I72332, b/148023068)

  • Interfejs Modifier.plus został wycofany. Użyj interfejsu Modifier.then. „To” ma silniejszy sygnał dotyczący kolejności, ale nie pozwala też na wpisanie słowa Modifier.padding().background() + anotherModifier, które przerywa łańcuch i jest trudniejsze do odczytania (Iedd58, b/161529964).

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

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

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

Wersja 0.1.0-dev15

22 lipca 2020 r.

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

Aktualizacja zależności

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

Zmiany interfejsu API

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

    Uzasadnienie

    Uzasadnienie obejmuje m.in.:

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

    Uwagi dotyczące migracji

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Prace te obejmowały kilka optymalizacji: 1. Wyniki porównań parametrów są przekazywane na wykresie wywołań do innych funkcji kompozycyjnych. Spowoduje to zmniejszenie liczby porównań w czasie działania i zmniejszenie rozmiaru tabeli przedziałów oraz częstsze pomijanie funkcji kompozycyjnych, które nie były wcześniej pomijane. 2. Parametry, które podczas kompilacji zostaną uznane za „statyczne”, nie są już porównywane ani przechowywane w środowisku wykonawczym. Zmniejsza to liczbę porównań i rozmiar tabeli przedziałów. 3. Kontroluj strukturę przepływu treści funkcji do zminimalizowania liczby generowanych grup. Zmniejsza to rozmiar tabeli przedziałów i zmniejsza nakład pracy w środowisku wykonawczym 4. Nieużywane parametry dyspozytora i odbiorcy w funkcji nie są uwzględniane przy określaniu możliwości pominięcia funkcji, jeśli nie są one używane w jej treści.

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

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

  • Dodano domyślne implementacje metod dla CompositionLifecycleObserver (I24289),

  • Wnioskodawca wymaga teraz metody clear() do usuwania kompozycje (Ibe697)

  • Dodano do atrybutu MutableVector atrybut asMutableList(), aby na nią zezwolić przekazywane do publicznego interfejsu API bez konieczności kopiowania całej z listy. (I298df)

  • Dodano zapamiętywanieCoroutineScope() w celu uzyskania zarządzanej Komponent CoroutineScope do uruchamiania zadań w odpowiedzi na zdarzenia. (I0e264)

  • MutableVector to nowa kolekcja, w której implementować dowolny standardowy interfejs kolekcji. Ten idzie szybciej niż inne wymagania. przeznaczone do użytku wyłącznie wewnętrznie. (I8ebd6).

  • Tymczasowo usunięto: StableMutableList i StableMutableMap aby uniknąć problemu w wersji, której wymaga Kotlin compose. Te interfejsy zostaną ponownie wprowadzone po zaktualizowaniu do wersji w oknie tworzenia wiadomości w Kotlin, na którym nie ma tego problemu.

    SnapshotStateList i SnapshotStateMap są teraz publiczne, ale będą wycofane po przywróceniu danych StableMutableList i StableMutableMap. (IA7769).

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

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

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

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

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

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

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

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

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

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

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

  • [Mutable]Operatory delegowania właściwości stanu zostały przeniesione do rozszerzeń na potrzeby optymalizacji przekazywania uprawnień do usługi Kotlin 1.4. Rozmówca musi dodać importuje dane, aby dalej używać funkcji by state { ... } lub by mutableStateOf(...). (I5312C)

  • Element androidx.compose.ViewComposer został przeniesiony do folderu androidx.ui.node.UiComposer Aplikacja androidx.compose.Emittable została usunięta. W przypadku KomponentNode wystąpił nadmiarowy błąd. Strona androidx.compose.ViewAdapters została usunięta. Nie są już one obsługiwanym przypadkiem użycia. Interfejs Compose.composeInto został wycofany. Użyj interfejsu setContent lub setViewContent. Metoda Compose.disposeComposition została wycofana. Użyj metody dispose dla obiektu Composition zwróconego przez setContent. Aplikacja androidx.compose.Compose.subcomposeInto została przeniesiona do androidx.ui.core.subcomposeInto Nazwa węzła KomponentNode#emitInsertAt została zmieniona na węzeł KomponentNode#insertAt Nazwa węzła KomponentNode#emitRemoveAt została zmieniona na KomponentNode#removeAt Nazwa KomponentNode#emitMode została zmieniona na KomponentNode#move (Idef00).

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

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

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

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

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

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

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

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

Poprawki błędów

  • Nazwa runOnIdleCompose została zmieniona na runOnIdle (I83607)
  • Made LayoutNode – eksperymentalny interfejs API (I4f2e9)
  • androidx.ui.foundation.TextFieldValue i Interfejs androidx.ui.input.EditorValue został wycofany. Pole tekstowe Obiekty kompozycyjne FilledTextField i CoreTextField, które korzysta z funkcji ten typ też jest wycofany. Użyj androidx.ui.input.TextFieldValue (I4066d, b/155211005)
  • Usunięto wycofany element DrawBackground Interfejs API z zaletą rozszerzenia DrawBackground API w modyfikatorze. Refaktoryzacja kolor, pędzel i malowanie rysunekTło implementacje, dzięki którym można też ograniczyć ścieżki kodu jako wymóg usunięcia, aby mógł zostać utworzony modyfikator jako część kompozycji. (I0343a)
  • Zaktualizowano wyższy poziom a także tworzyć interfejsy API, które udostępniają obiekt Canvas i udostępnić CanvasScope. Spowoduje to usunięcie że konsumenci muszą utrzymywać własnych obiektów Paint. Dla konsumentów, którzy nadal potrzebują dostępu do Canvas mogą korzystać z rozszerzenia DrawCanvas, , która powoduje wywołanie zwrotne do problemu za pomocą poleceń rysowania Obszar roboczy. (I80afd).
  • Zmieniono końcowy interfejs API WithConstraints lambda. Teraz zamiast 2 parametrów ma zakres odbiornika, który oprócz ograniczeń oraz właściwości layoutDirection zapewnia właściwości minWidth, maxWidth, minHeight i maxHeight w Dp (I91b9a, b/149979702)
  • Dodano symetryczny modyfikator dopełnienia. (I39840)
  • Zaktualizowaliśmy właściwości wrapContentWidth i wrapContentHeight tak, aby można było korzystać z wyrównania w pionie lub poziomie, a nie wyrównania w poziomie. Modyfikator grawitacji został zaktualizowany, aby przyjmował wyrównanie w pionie lub poziomie. Wiersze, kolumny i stos zostały zaktualizowane, aby obsługiwały niestandardowe ciągłe wyrównania. (IB0728)
  • Nazwa modułu ui-text została zmieniona na ui-text-core (I57dec).
  • Ulepszenie interfejsu API DrawModifier:
    • Zmieniono zakres odbiorcy dla metody Draw() ContentDrawScope
    • Usunięto wszystkie parametry z dresz()
    • Interfejs DrawScope jest taki sam jak poprzednia wersja CanvasScope
    • ContentDrawScope ma metodę DrawContent() (Ibaced, b/152919067)
  • Interfejs ColoredRect został wycofany. Użyj w zamian zasady Box(Modifier.preferredSize(width, height).drawBackground(color)). (I499fa, b/152753731)
  • Zastąpienie operatora modyfikatora plus funkcjami rozszerzeń fabrycznych (I225e4).
  • Elementy RowScope i ColumnScope są teraz dostępne poza elementami Wiersz i Kolumna. (I3a641)
  • Zmieniono nazwę Układ Elastyczny na Układ Weight. Zmieniono nazwę precyzyjnego parametru na wypełnienie. (If4738).
  • WithConstraints uzyskała parametr LayoutDirection (I6d6f7)
  • Zmieniono nazwę tła na DrawBackground i tak, by było domyślnie zapamiętywane (Ia0bd3)
  • Zastąpiliśmy ButtonStyle różnymi funkcjami i usunięto przeciążenie tekstem (ciągiem znaków). Informacje o wykorzystaniu znajdziesz w zaktualizowanych przykładach. (If63ab, b/146478620, b/146482131)
  • runOnIdleCompose i runOnUiThread to teraz funkcje globalne zamiast metod na ComposeTestRule. (Icbe8f).

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

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