Utwórz środowisko wykonawcze
androidx.compose.runtime
androidx.compose.runtime.rxjava2
androidx.compose.runtime.rxjava3
androidx.compose.runtime.saveable
androidx.compose.runtime.snapshots
Zapoznaj się z dokumentacją interfejsu API dotyczącą wszystkich pakietów tworzenia
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.
Grupa | Opis |
---|---|
compose.animation, | Twórz animacje w aplikacjach Jetpack Compose, aby wzbogacać wrażenia użytkowników. |
compose.buildr | Przekształcaj funkcje @Composable i optymalizuj funkcje za pomocą wtyczki kompilatora Kotlin. |
compose.foundation | Twó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.
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 naandroidx.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 metodyprovidesComputed
zamiastprovides
. - 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ścicurrent
, 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 funkcjimutableStateOf()
. Początkowy stan elementówmutableStateListOf()
imutableStateMapOf()
jest pusty. - Dodano obiekty
Snapshot.isInSnapshot
iSnapshot.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 numeruonForgotten
. (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 metodyprovidesComputed
zamiastprovides
. - 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ścicurrent
, 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 funkcjimutableStateOf()
. Początkowy stan elementówmutableStateListOf()
imutableStateMapOf()
jest pusty. - Dodano obiekty
Snapshot.isInSnapshot
iSnapshot.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 elemenciesnapshotFlow
. (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 numeruonForgotten
. (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łudzeSnapshotIdSet
. (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 numeruonForgotten
. (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 aplikacjiDerivedState
. (21862e) - Użyj wartości
IntRef
dla całkowitej wartościSnapshotThreadLocal
w poluDerivedState
. (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 jakoRandomAccess
, 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 funkcjastateSaver
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
wDerivedState
, 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łaniuremember
. (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 obiektachState
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 elementuwithFrameNanos
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ędziuSlotTable.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
wDerivedState
, 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 toAutoboxingStateCreation
. 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ącwarning "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
wDerivedState
, 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łaniuremember
. (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 obiektachState
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 podczasComposition.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 funkcjiSnapshot.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 elementuwithFrameNanos
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ędziuSlotTable.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 elementuCompositionLocals
za pomocą interfejsuCompositionLocalConsumerModifierNode
. (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
lubSnapshotStateMap
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
doComposableMethod
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 klasyjava.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
iSnapshotStateMap
zostały teraz zaimplementowane z poszanowaniem zasadytoList()
itoMap()
. 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ą funkcjisnapshotFlow
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
- Aby zapewnić lepszą obsługę edycji na żywo, dodaliśmy interfejsy API umożliwiające obsługę wyjątków podczas tworzenia.
- Obsługa błędów kompozycji w przypadku ponownego załadowania „gorące”
- Obsługa błędów edycji na żywo podczas zapisywania/przywracania
Śledzenie kompozycji
- Dodaliśmy interfejsy API śledzenia środowiska wykonawczego, aby obsługiwać nowe narzędzia do śledzenia kompozycji
- Generowanie kompozycyjnych wywołań rozpoczęcia i zakończenia zdarzeń śledzenia
- Ponownie dodano ComposerKt.traceEventStart(Int, String)
Interfejsy API Composable Reflection
- Dodaliśmy nowy interfejs API
ComposableMethod
, aby zapewnić bardziej niezawodne oparte na odbiciu wywołania kompozycyjne interfejsy API. - Przenoszenie zasobu BeyondCorpComposable do środowiska wykonawczego
- Interfejs API Rework do wywoływania metody kompozycyjnej
Poprawki dotyczące środowiska wykonawczego
- Naprawianie nieprawidłowego testu zakresu przy sprawdzaniu tabel przedziałów dla znaczników
- Zezwalaj na przenoszenie treści ruchomej do i poza element SubcomposeLayout
- Rozwiązywanie problemów z przenoszeniem treści do nowej zawartości podkompozycji
System zrzutów
- System zrzutów dysku uzyskał różne ulepszenia w zakresie zarządzania pamięcią, wydajności i poprawności.
- Optymalizowanie usuwania zakresu w SnapshotStateObserver
- Pozbądź się zagnieżdżonych zrzutów utworzonych z przezroczystych zrzutów
- Poprawiono warunek wyścigu podczas odczytu stanu ze zrzutu globalnego
- Obsługa parametru DerivedState w zasadzie SnapshotStateObserver
- Zapobiegaj usuwaniu z kompozycji stanu derywowanego, gdy jest on odczytywany w innych zakresach
- Używanie IdentityTrackMap zamiast HashMap w elemencie DerivedState
- Zaktualizuj obserwatorów stanu derywowanego, aby używać wektorów zmiennych
- Zaktualizuj czyszczenie stanu SnapshotStateObserver
- Zastąpienie SnapshotStateObserver.invalidated ustawieniem SlateSet.
- Poprawiono warunek wyścigu podczas odczytu stanu ze zrzutu globalnego
- Poprawianie użycia nieaktualnego rekordu w obliczaniu haszu DerivedState
- Poprawianie warunków wyścigu podczas rozwijania podsumowania globalnego
- Przyspieszanie czyszczenia obserwacji zakresu w SnapshotStateObserver
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
irememberCoroutineScope
został zmieniony nacrossinline
. 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
movableContentOf
interfejsu API, który można wykorzystać do zapewnienia złożonych wrażeń użytkownika, takich jak przejścia wspólnych elementów. Interfejs APImovableContentOf
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
- Dodaj zrzut eksperymentalny niebezpiecznyEnter/opcję
- Dodaj eksperymentalny interfejs API Snapshot.asContextElement
- Przedstawienie Snapshot.withoutReadObserwacja
- Pozwalanie na przenoszenie stanu w obrębie kompozycji
- Śledzenie ponownych kompozycji w narzędziu Compose
Skuteczność w: 1.2
- Poprawianie lokalnej kompozycji
- Profile bazowe na potrzeby tworzenia powinny być określane za pomocą testów porównawczych
Poprawki błędów w usłudze 1.2
- Usuwanie informacji o śledzeniu z zakresów ponownego tworzenia wersji
- Zapobiegaj usuwaniu z kompozycji stanu derywowanego, gdy jest on odczytywany w innych zakresach
- Efektywniejsze użycie metody removeScope() w metodzie SnapshotStateObserver
- Wyczyść zależności stanów derywowanych w kompozycji
- Naprawa zmiany wartości currentCompositeKeyHash po wewnętrznej ponownej kompozycji wewnątrz treści ruchomej
- Sprzątaj nieprawidłowe kompozycje podczas utylizacji
- Napraw stan pobierania odczytywany podczas ponownej kompozycji
- Naprawianie wycieku pamięci podczas obserwacji obiektów stanu derywowanego
- Poprawiono złożony klucz szyfrowania movableContent dla zachowania spójności
- Napraw narożnik obudowy, w której kompozytor ulegał awarii
- Zapewnianie wymuszonej unieważnienia grupy
- Naprawianie błędu polegającego na tym, że dane wejściowe do zapisania są przywracane w niewłaściwej kolejności
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 interfejsuCompositionTracer
. (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
iComposableOpenTarget
, 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
lubReusableComposeNode
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 zamiastComposableTarget
. Adnotacja kompozycyjna oznaczony za pomocą atrybutuComposableTargetMarker
jest odpowiednikiem funkcjiComposbleTarget
z pełną i jednoznaczną nazwą atrybutu jako parametr aplikacji. Na przykład za pomocą funkcjiComposableTargetMarker
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 poleidentity
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 adresemandroidx.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 przezRecomposer.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 Kotlinie1.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 AGP7.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 katalogusrc/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żywaszadb 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ówH
,S
iP
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 klasaandroidx.compose.runtime.SlotTable
miałaby deskryptorLandroidx/compose/runtime/SlotTable;
.<METHOD_SIGNATURE>
to podpis metody. Zawiera nazwę, typy parametrów i typy zwracanych metod. Na przykład metodafun isPlaced(): Boolean
wLayoutNode
ma podpisisPlaced()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 terazState<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 przypadkuComposeNode
. (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 parametrucount
. 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
lubRecomposer.runRecomposeAndApplyChanges
bezMonotonicFrameClock
wyrzuci terazIllegalStateException
. (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
dlacompositionLocalOf
i ParametrstaticCompositionLocalOf
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 zaselected
ionClick
. - Nazwa parametru
alwaysShowLabels
w elemencie bottomNavigationItem została zmieniona naalwaysShowLabel
. - Zmieniono nazwę parametrów
bodyContent
niektórych komponentów nacontent
. - 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 parametrsecondaryVariant
. Ten kolor jest zwykle taki sam jak kolorsecondary
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
wSlider
naonValueChangeFinished
i ustawiłem ją na wartość null. - Nazwa parametru
text
w komórceSnackbar
została zmieniona nacontent
w celu zachowania spójności. - Dodano parametr
contentPadding
do elementuDropdownMenuItem
, aby umożliwić dostosowanie domyślnego dopełnienia, oraz ustawieniecontent
jako rozszerzenia w witrynieRowScope
. - Nazwa
ModalDrawerLayout
została zmieniona naModalDrawer
. - Nazwa
BottomDrawerLayout
została zmieniona naBottomDrawer
. - (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
iwithMutableSnapshot
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ępujeCompositionLifecycleObserver
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 kompozycjionRemembered
to nazwa dla każdego odwołania, w którym elementonEnter
jest wywoływany tylko raz.onEnter
została wywołana wielokrotnie, jeśli obiekt był używany w podkompozycjach, takich jakWithConstraints
iScaffold
, tworząc singielonEnter
gwarancja połączenia jest niewiarygodna i została usunięta w przypadkuRememberObserver
Funkcja
RememberObserver
dodaje metodęonAbandoned
, która jest wywoływana, jeśli Z powodowanego wywołania zwrotnego jest zwracanaRememberObserver
instancja doremember
, ale nie został zapamiętany w stanie kompozycji i dlatego nigdy nie zostanie wywołana funkcjaonRemembered
. 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ąpienieRememberObserver
następujące po singlu powyższa rekomendacja pozwala śledzić zasób zewnętrznyonForgotten
ionAbandoned
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ślionRemembered
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 nainsertTopDown()
.Dodano nową metodę:
insertBottomUp()
.Stosowany sposób wstawia węzły do edytowanego drzewa przy użyciu
insertTopDown()
lubinsertBottomUp()
w zależności od który jest skuteczniejszy.Niektóre drzewa, takie jak
LayoutNode
iView
, 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ępujeinsertBottomUp()
, aby utworzyć drzewo od dołuinsertTopDown()
, 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 docontent
. (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 doruntime-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ż implementacjiMonotonicFrameClock
Rozmówcy z numeruwithFrameNanos
powinni zaimportować rozmowy z najwyższego poziomu bezpośrednio. (Icb642, b/166778123)
Poprawki błędów
- Funkcje testowania globalnego, takie jak
onNode
czywaitForIdle
, 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
iwithMutableSnapshot
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 wzorcaby 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 tegoAndroidView
. 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()
isavedInstanceStateOf()
zostały zmienione nastructuralEqualityPolicy()
zamiastreferentialEqualityPolicy()
.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()
isavedInstanceStateOf()
używająmutableStateOf()
w ich implementacjach, więc zostały zmienione tak, by były zgodnemutableStateOf()
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 zastosowaniastate
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 klasydata
, może zauważyć pogorszenie wydajności, ponieważ stosowane przez nich metodyequals()
są teraz domyślnie wywoływane po przypisaniu do funkcjimutableStateOf()
.Poprzednie działanie można przywrócić, dodając zasadę parametr
policy = referentialEqualityPolicy()
wywołujący funkcjęmutableStateOf()
,ambientOf()
isavedInstanceStateOf()
. (IC21a7).Funkcje
Row
iColumn
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ścival
klasy danych, a następnie użyjstate
zamiastremember
i przypisz wartość State sklonowanym kopiom oryginału za pomocą wygodnej metody klasy danychcopy(...)
.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ścivar
pierwotnej klasy właściwościamivar
właściwościamimutableStateOf
. 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:
- Niektóre rozmowy są pomijane tam, gdzie wcześniej nie były
- 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 wersjivararg
. 5. Adnotacja przestawna została wycofana. Użyjkey
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
iStableMutableMap
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
iSnapshotStateMap
są teraz publiczne, ale będą wycofane po przywróceniu danychStableMutableList
iStableMutableMap
. (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 { ... }
lubby 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
lubsetViewContent
. Metoda Compose.disposeComposition została wycofana. Użyj metodydispose
dla obiektuComposition
zwróconego przezsetContent
. 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 natrue
, 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 narunOnIdle
(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
irunOnUiThread
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 funkcjiStateFlow<T>
lub przekaż konkretną wartość początkową. (I63f98, b/157674865)