Room
Najnowsza aktualizacja | Wersja stabilna | Kandydat do wydania | Wersja Beta | Wydanie alfa |
---|---|---|---|---|
21 sierpnia 2024 r. | 2.6.1 | - | - | 2.7.0-alfa07 |
Deklarowanie zależności
Aby dodać zależność od pokoju, musisz dodać repozytorium Google Maven do swojej w projektach AI. Zapoznaj się z repozytorium Google Maven. .
Zależności dotyczące sal obejmują migracji z pokoju testowego oraz Sala RxJava
Dodaj zależności artefaktów, których potrzebujesz w pliku build.gradle
aplikacji lub modułu:
Groovy
dependencies { def room_version = "2.6.1" implementation "androidx.room:room-runtime:$room_version" annotationProcessor "androidx.room:room-compiler:$room_version" // To use Kotlin annotation processing tool (kapt) kapt "androidx.room:room-compiler:$room_version" // To use Kotlin Symbol Processing (KSP) ksp "androidx.room:room-compiler:$room_version" // optional - RxJava2 support for Room implementation "androidx.room:room-rxjava2:$room_version" // optional - RxJava3 support for Room implementation "androidx.room:room-rxjava3:$room_version" // optional - Guava support for Room, including Optional and ListenableFuture implementation "androidx.room:room-guava:$room_version" // optional - Test helpers testImplementation "androidx.room:room-testing:$room_version" // optional - Paging 3 Integration implementation "androidx.room:room-paging:$room_version" }
Kotlin
dependencies { val room_version = "2.6.1" implementation("androidx.room:room-runtime:$room_version") annotationProcessor("androidx.room:room-compiler:$room_version") // To use Kotlin annotation processing tool (kapt) kapt("androidx.room:room-compiler:$room_version") // To use Kotlin Symbol Processing (KSP) ksp("androidx.room:room-compiler:$room_version") // optional - Kotlin Extensions and Coroutines support for Room implementation("androidx.room:room-ktx:$room_version") // optional - RxJava2 support for Room implementation("androidx.room:room-rxjava2:$room_version") // optional - RxJava3 support for Room implementation("androidx.room:room-rxjava3:$room_version") // optional - Guava support for Room, including Optional and ListenableFuture implementation("androidx.room:room-guava:$room_version") // optional - Test helpers testImplementation("androidx.room:room-testing:$room_version") // optional - Paging 3 Integration implementation("androidx.room:room-paging:$room_version") }
Informacje o korzystaniu z wtyczki KAPT znajdziesz w dokumentacji KAPT.
Informacje o korzystaniu z wtyczki KSP znajdziesz w krótkim wprowadzeniu do KSP.
Informacje o korzystaniu z rozszerzeń Kotlin znajdziesz w dokumentacji ktx.
Więcej informacji o zależnościach znajdziesz w artykule Dodawanie zależności kompilacji.
Opcjonalnie dla bibliotek innych niż Android (tj. modułów Gradle dostępnych tylko w Javie lub Kotlinie)
możesz korzystać z adnotacji do pokoi (androidx.room:room-common
).
Konfigurowanie opcji kompilatora
W pokoju dostępne są poniższe opcje procesora adnotacji.
room.schemaLocation |
directory
Włącza eksportowanie schematów baz danych do plików JSON w katalogu. Zobacz Migracje sal . |
room.incremental |
boolean
Włącza procesor adnotacji przyrostowych Gradle. Wartość domyślna jest true .
|
room.generateKotlin |
boolean
Generuj pliki źródłowe Kotlin zamiast języka Java. Wymaga KSP. Wartość domyślna to false .
Więcej informacji znajdziesz w uwagach do wersji 2.6.0.
|
Używanie wtyczki Room Gradle
W wersji 2.6.0 lub nowszej pokoju możesz używać wtyczki Room Gradle do konfigurowania opcji kompilatora sal. Wtyczka konfiguruje projekt w taki sposób, wygenerowane schematy (będące wynikiem zadań kompilacji, które są wykorzystywanych na potrzeby migracji automatycznych) są prawidłowo skonfigurowane tak, aby można je było odtworzyć i kompilacje do buforowania.
Aby dodać wtyczkę, w pliku kompilacji Gradle najwyższego poziomu zdefiniuj i jej wersji.
Odlotowe
plugins { id 'androidx.room' version "$room_version" apply false }
Kotlin
plugins { id("androidx.room") version "$room_version" apply false }
W pliku kompilacji Gradle na poziomie modułu zastosuj wtyczkę oraz room
.
.
Odlotowe
plugins { id 'androidx.room' } android { ... room { schemaDirectory "$projectDir/schemas" } }
Kotlin
plugins { id("androidx.room") } android { ... room { schemaDirectory("$projectDir/schemas") } }
Podczas korzystania z wtyczki do obsługi Gradle w pokoju wymagane jest ustawienie schemaDirectory
. Ten
skonfiguruje kompilator do sal, a także różne zadania i jego backendy
(javac, KAPT, KSP) do umieszczania plików schematu w odpowiednich folderach,
schemas/flavorOneDebug/com.package.MyDatabase/1.json
Pliki te powinny być
zameldowana w repozytorium, która ma służyć do weryfikacji i automatycznej migracji.
Niektórych opcji nie można skonfigurować we wszystkich wersjach wtyczki Room Gradle,
mimo że są one obsługiwane przez kompilator do pokoi. Tabela poniżej zawiera
i pokazuje wersję wtyczki Room Gradle, która dodała obsługę
konfigurując tę opcję za pomocą rozszerzenia room
. Jeśli masz starszą wersję,
Jeśli opcja nie jest jeszcze obsługiwana, możesz użyć
opcji procesora adnotacji.
Option | Od wersji |
---|---|
room.schemaLocation (pole wymagane) |
2.6.0 |
room.incremental |
- |
room.generateKotlin |
- |
Użyj opcji procesora adnotacji
Jeśli nie używasz wtyczki Room Gradle lub jeśli nie korzystasz z wybranej opcji obsługiwanej przez Twoją wersję wtyczki, możesz skonfigurować pokój za pomocą opcji procesora adnotacji, jak opisano w Dodaj zależności kompilacji. Jak określenie opcji adnotacji zależy od tego, czy używasz klucza KSP czy KAPT dla pokoju.
Odlotowe
// For KSP ksp { arg("option_name", "option_value") // other otions... } // For javac and KAPT android { ... defaultConfig { ... javaCompileOptions { annotationProcessorOptions { arguments += [ "option_name":"option_value", // other options... ] } } } }
Kotlin
// For KSP ksp { arg("option_name", "option_value") // other options... } // For javac and KAPT android { ... defaultConfig { ... javaCompileOptions { annotationProcessorOptions { arguments += mapOf( "option_name" to "option_value", // other options... ) } } } }
Ponieważ room.schemaLocation
jest katalogiem, a nie typem podstawowym,
konieczne jest użycie CommandLineArgumentsProvider
przy dodawaniu tej opcji,
którą Gradle wie o tym katalogu podczas przeprowadzania aktualnych testów.
Migracja bazy danych sal
pokazuje pełną implementację CommandLineArgumentsProvider
, która zapewnia
lokalizacji schematu.
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 2.7
Wersja 2.7.0-alpha07
21 sierpnia 2024 r.
Usługa androidx.room:room-*:2.7.0-alpha07
została zwolniona. Wersja 2.7.0-alfa07 zawiera te zatwierdzenia.
Nowe funkcje
- Wtyczka Room Gradle będzie teraz automatycznie dodawać wyeksportowane schematy do źródeł zasobów narzędzia Android Instrumentation Test, aby można było ich używać w
MigrationTestHelper
.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że w wygenerowanej wartości
RoomDatabaseConstructor
w funkcjiinitialize
brakowało modyfikatora „actual”, jeśli ta funkcja została również zastąpiona w deklaracji „oczekuj”. (359631627). - Rozwiązaliśmy problem z wygenerowaną wartością atrybutu
RoomDatabaseConstructor
niezgodną z widocznością deklaracji „oczekiwania”. (358138953).
Wersja 2.7.0-alpha06
7 sierpnia 2024 r.
Usługa androidx.room:room-*:2.7.0-alpha06
została zwolniona. Wersja 2.7.0-alfa06 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Zmień konfigurację instancji na potrzeby
RoomDatabase
w projekcie KMP.
Ze względu na model kompilacji Kotlin 2.0 strategia odwoływania się do funkcji o nazwie instantiateImpl()
do wygenerowania jest bardziej uzasadniona. Wprowadzono 2 nowe interfejsy API: @ConstructedBy
i RoomDatabaseConstructor
, które zastępują strategię instantiateImpl()
. Oto nowa strategia:
Zdefiniuj oczekiwany obiekt, który implementuje
RoomDatabaseConstructor
expect object MyDatabaseCtor : RoomDatabaseConstructor<MyDatabase>
Połącz obiekt z deklaracją
@Database
za pomocą funkcji@ConstructedBy
@Database(...) @ConstructedBy(MyDatabaseCtor::class) // NEW abstract class MyDatabase : RoomDatabase
Tworzenie nowej instancji bazy danych bez przekazywania argumentu fabrycznego
fun createNewDatabase(path: String) = Room.databaseBuilder<AppDatabase>(name = path) .setDriver(BundledSQLiteDriver()) .setQueryCoroutineContext(Dispatchers.IO) .build()
Poprawki b/316978491, b/338446862 i b/342905180
- Obsługa
@RawQuery
w narzędziu KMP Room dzięki dodaniu nowego interfejsu API o nazwieRoomRawQuery
, który jest podobny doSupportSQLiteQuery
pod względem przechowywania nieprzetworzonego ciągu SQL oraz funkcji wiązania argumentów w instrukcji. Funkcje z adnotacjami funkcji@RawQuery
mogą teraz akceptowaćRoomRawQuery
jako pojedynczy parametr. (IEA844, b/330586815) - Dodaj przeciążenie typu
setQueryCallback()
, które akceptuje żądanieCoroutineContext
. (Id66ff, b/309996304) - Dodano obsługę wieloplatformowych celów Kotlin
linuxArm64
(I139d3, b/338268719)
Poprawki błędów
- Rozwiąż problem, który powodował, że pokój nieprawidłowo generował wywołanie do funkcji
recursiveFetchArrayMap
w przypadku elementów docelowych innych niż Android. (710c36, b/352482325) - Rozwiązaliśmy problem, który powodował, że w projekcie KMP usługa Room zgłaszała wyjątek „Upłynął limit czasu próby połączenia”. (fa72d0, b/347737870)
- Naprawiono błąd w automatycznych migracji, który powodował, że klucze obce były sprawdzane zbyt wcześnie, zanim inne tabele zmieniły schematy pod kątem nowych kluczy obcych. (7672c0, b/352085724)
Wersja 2.7.0-alpha05
10 lipca 2024 r.
Usługa androidx.room:room-*:2.7.0-alpha05
została zwolniona. Wersja 2.7.0-alfa05 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Nazwa
SQLiteKt
została zmieniona naSQLite
, aBundledSQLiteKt
naBundledSQLite
. (I8B501)
Poprawki błędów
- Naprawiono błąd, który powodował zakleszczenie lub błąd
RoomDatabase
po przekroczeniu limitu czasu połączenia w przypadku używaniaAndroidSQLiteDriver
.
Wersja 2.7.0-alpha04
12 czerwca 2024 r.
Usługa androidx.room:room-*:2.7.0-alpha04
została zwolniona. Wersja 2.7.0-alfa04 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że procesor adnotacji w pokoju generował niezgodny kod KMP, gdy w DAO zdefiniowany był typ zwrotu z wielu map. (B/340983093)
- Rozwiązaliśmy problem, który powodował, że pokój nie mógł znaleźć wygenerowanej implementacji bazy danych, jeśli klasa z adnotacjami
@Database
nie miała pakietu. (b/342097292) - Rozwiązaliśmy problem, który powodował, że włączenie automatycznego zamykania i unieważniania wielu instancji skutkowało czasem
ConcurrentModificationException
, gdy baza danych była zamykana automatycznie z powodu bezczynności.
Wersja 2.7.0-alpha03
29 maja 2024 r.
Usługa androidx.room:room-*:2.7.0-alpha03
została zwolniona. Wersja 2.7.0-alfa03 zawiera te zatwierdzenia.
Poprawki błędów
- Napraw różne problemy dotyczące Kotlin 2.0 i KSP 2.0. Pamiętaj, że platforma Kotlin 2.0 z obsługą KSP 2 nie została jeszcze ukończona i pracujemy nad różnymi interfejsami API i zmianami w działaniu nowego kompilatora. (b/314151707)
Wersja 2.7.0-alpha02
14 maja 2024 r.
Usługa androidx.room:room-*:2.7.0-alpha02
została zwolniona. Wersja 2.7.0-alfa02 zawiera te zatwierdzenia.
Poprawki błędów
- Usunięto różne problemy z KSP.
Wersja 2.7.0-alpha01
1 maja 2024 r.
Usługa androidx.room:room-*:2.7.0-alpha01
została zwolniona. Wersja 2.7.0-alfa01 zawiera te zatwierdzenia.
Nowe funkcje
- Obsługa wielu platform (KMP): w tej wersji pokój został przekształcony w bibliotekę Kotlin Multiplatform (KMP). Chociaż wciąż wymaga trochę pracy, ta wersja wprowadza nową wersję Room, w której większość funkcji została ujednolicona (w ten sposób została opracowana z myślą o wieloplatformie). Obecnie obsługiwane platformy to Android, iOS, JVM (komputery), natywny Mac i system Linux. Wszystkie brakujące funkcje na nowych obsługiwanych platformach zostaną oznaczone jako „pełne funkcji” w kolejnych wersjach pokoi.
Więcej informacji o tym, jak zacząć korzystać z usługi Room KMP, znajdziesz w oficjalnej dokumentacji KMP przeznaczonej dla sal.
- Generowanie kodu Kotlin w KSP jest domyślnie włączone, jeśli przetwarzanie odbywa się przez KSP. W przypadku projektów KAPT lub Javy są nadal generowane w narzędziu Room.
Zmiany interfejsu API
- Dodano przeciążenie zasady
Room.databaseBuilder()
, które wykorzystuje parametr lambda, który powinien być używany z funkcją generowania pokoi, aby uniknąć używania odbicia podczas tworzenia instancji wygenerowanej implementacjiRoomDatabase
. Przykład użycia:
Room.databaseBuilder<MyDatabase>(
context = appContext,
name = dbFilePath,
factory = { MyDatabase::class.instantiateImpl() }
)
- Do kreatora tworzenia dodano interfejs API służący do konfigurowania sali z użyciem obiektu
CoroutineContext
:RoomDatabase.Builder.setQueryCoroutineContext
. Pamiętaj, że elementRoomDatabase
można skonfigurować tylko z wykonawcami korzystającymi zsetQueryExecutor
lub z kontekstem Coroutine, ale nie z obydwoma tymi elementami. - Dodano interfejs API do konfigurowania sali ze sterownikiem
SQLite
:RoomDatabase.Builder.setDriver()
. Więcej informacji o interfejsieSQLite
Driver API znajdziesz w dokumentacji SQLite KMP. - Dodano interfejsy API umożliwiające dostęp do interfejsu
SQLiteConnection
z interfejsów API sterowników:RoomDatabase.useReaderConnection
iRoomDatabase.useWriterConnection
. - Wywołania zwrotne związane z usługą Varios Room mają teraz przeciążoną wersję, która otrzymuje
SQLiteConnection
zamiastSupportSQLiteDatabase
. Należy je zastąpić podczas migracji do projektu KMP. Więcej informacji o przenoszeniu informacji o wykorzystaniu sal w aplikacji na Androida do wspólnego modułu KMP znajdziesz w przewodniku po migracji. Wywołania zwrotne:Migration.migrate(SQLiteConnection)
AutoMigrationSpec.onPostMigrate(SQLiteConnection)
RoomDatabase.Callback.onCreate(SQLiteConnection)
RoomDatabase.Callback.onDestructiveMigration(SQLiteConnection)
RoomDatabase.Callback.onOpen(SQLiteConnection)
- Artefakt KTX
androidx.room:room-ktx
został scalony z artefaktemandroidx.room:room-runtime
wraz ze wszystkimi jego interfejsami API. artefakt jest teraz pusty. Usuń go z listy zależności.
Wersja 2.6
Wersja 2.6.1
29 listopada 2023 r.
Usługa androidx.room:room-*:2.6.1
została zwolniona. Wersja 2.6.1 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązano problem z wygenerowanym kodem, który powodował, że domyślna wartość kolumn liczby z podwójną wartością w polu
EntityCursorConverter
była ustawiana na 0 zamiast 0,0. Uwzględniono też potencjalną poprawkę dotyczącą podobnej wielkości liter w kolumnach typu Floating. (Id75f5, b/304584179) - Wyjątki zgłoszone w trakcie wczytywania typu
PagingSource
będą teraz rozpowszechniane jako elementLoadStateUpdate
zLoadResult.Error
zawierający obiekt typu Throwable. Ten stan błędu można zaobserwować wPagingDataAdapter.loadStateFlow(Views)
lubLazyPagingItems.loadState(Compose)
. Zauważ, że jest to zmiana w zachowaniu, w której w przeszłości błędy wczytywania będą pojawiać się jako wyjątek wywołany przez metodę dao, która uruchomiła wczytywanie. (I93887, b/302708983)
Wersja 2.6.0
18 października 2023 r.
Usługa androidx.room:room-*:2.6.0
została zwolniona. Wersja 2.6.0 zawiera te zatwierdzenia.
Ważne zmiany wprowadzone od wersji 2.5.0
- Opcja włączenia generowania kodu w Kotlin (lub „Kotlin CodeGen”) jest teraz dostępna w narzędziu KSP pokoju. (4297ec0). Aby włączyć Kotlin CodeGen w pokoju, dodaj nazwę opcji
room.generateKotlin
do opcji procesora dla KSP. Więcej informacji o przekazywaniu opcji procesora na potrzeby KSP znajdziesz w dokumentacji KSP.
Uwaga: podczas korzystania z kotlin CodeGen należy pamiętać, że zostały dodane dodatkowe ograniczenia. Właściwości abstrakcyjne jako metody pobierania DAO lub zapytania DAO w kotlin CodeGen są niedozwolone. Należy je przepisać jako funkcje, aby uniknąć fałszywego przekonania, że wartość właściwości jest niezmienna i ma stały zapisany wynik. Kolejne ograniczenie, które zostało dodane, polega na tym, że w narzędziu Room for Kotlin CodeGen nie są już dozwolone typy zwracanych kolekcji, dla których wartości null są dozwolone.
Ostrzeżenie: podczas korzystania z narzędzia Kotlin CodeGen możesz zauważyć, że Twoje projekty są bardziej rygorystyczne pod względem dopuszczalności wartości null. W Kotlin CodeGen znaczenie argumentów typu null jest istotny, natomiast w Javie ta zasada jest najczęściej ignorowana. Załóżmy na przykład, że masz zwrot typu „Flow<foo\>”, a tabela jest pusta. W Java CodeGen nie spowoduje to żadnych problemów, ale w Kotlin CodeGen pojawi się błąd. Aby tego uniknąć, musisz użyć parametru „Flow<foo?\>” przy założeniu, że emitowana jest wartość null. </foo?\></foo\>
- Nowy artefakt wtyczki Room Gradle został dodany do pokoju o identyfikatorze
androidx.room
. Rozwiązuje to różne problemy występujące w pokoju dotyczące wprowadzania i wyjścia schematów za pomocą opcji procesora adnotacji Gradle. Więcej informacji znajdziesz w informacjach o wersji 2.6.0-alfa02 pokoju. - Klasy wartości w elementach pokoju są teraz obsługiwane przez KSP. (4194095).
- Zagnieżdżone typy zwracania map w funkcjach DAO są teraz obsługiwane w pokojach. (I13f48, 203008711)
Wersja 2.6.0-rc01
20 września 2023 r.
Usługa androidx.room:room-*:2.6.0-rc01
została zwolniona. Wersja 2.6.0-rc01 zawiera te zatwierdzenia.
Wersja 2.6.0-beta01
23 sierpnia 2023 r.
Usługa androidx.room:room-*:2.6.0-beta01
została zwolniona. Wersja 2.6.0-beta01 zawiera te zatwierdzenia.
Poprawki błędów
- Obsługa wyjątku przypadku
SQLite
podczas działania typu upsert napotkanego, gdy wyjątek2067 SQLITE_CONSTRAINT_UNIQUE
został zgłoszony podczas operacji upsert. Komponent upsert powinien wykonać aktualizację. (If2849, b/243039555)
Wersja 2.6.0-alpha03
9 sierpnia 2023 r.
Usługa androidx.room:room-*:2.6.0-alpha03
została zwolniona. Wersja 2.6.0-alfa03 zawiera te zatwierdzenia.
Nowe funkcje
- Zagnieżdżone typy zwracania map w funkcjach DAO są teraz obsługiwane w pokojach. (I13f48, 203008711)
Zmiany interfejsu API
- Utworzono nowy typ adnotacji o nazwie
@MapColumn
, który zastąpił tag@MapInfo
, który został już wycofany. Dla każdej nazwy kolumny (keyColumnName
,valueColumnName
lub obu) dostępnej w adnotacji@MapInfo
musisz zadeklarować adnotację@MapColumn
przy użyciu samego parametrucolumnName
i użyć adnotacji w konkretnym argumencie typu, do którego się odwołujesz (klucz lub wartość mapy), w zwracanym typie funkcji DAO. Dzieje się tak, ponieważ adnotacja@MapColumn
jest używana bezpośrednio w argumencie typu w zwracanym typie funkcji DAO, a nie w samej funkcji, takiej jak@MapInfo
. Więcej informacji znajdziesz w dokumentacji usługi@MapColumn
. (Ib0305, b/203008711) - Zaktualizowano pliki interfejsu API, aby dodać adnotacje o pomijaniu zgodności (I8e87a, b/287516207)
- Interfejsy API wtyczki Room Gradle zostały zaktualizowane, aby nie zawsze wymagały konfiguracji dla poszczególnych wariantów. Oznacza to, że wtyczka może przyjmować lokalizację globalną dla wszystkich wariantów bez tworzenia wielu katalogów. Umożliwia to płynniejsze migracje, które jest na tyle elastyczne, że pozwala też ręcznie konfigurować rodzaje lub schematy typów kompilacji, zachowując jednocześnie zalety wtyczki (kompilacje powtarzalne i buforowane). (I09d6f, b/278266663)
Poprawki błędów
- Usunięto potencjalną lukę w zabezpieczeniach pamięci w
QueryInterceptorStatement
. (I193d1) - Naprawiliśmy nieprawidłowe działanie funkcji
QueryInterceptorDatabase execSQL()
. (Iefdc8).
Wersja 2.6.0-alpha02
21 czerwca 2023 r.
Usługa androidx.room:room-*:2.6.0-alpha02
została zwolniona. Wersja 2.6.0-alfa02 zawiera te zatwierdzenia.
Wtyczka do obsługi Gradle do sal
Ta nowa wersja zawiera nowy artefakt wtyczki do obsługi pokoi o identyfikatorze androidx.room
, która rozwiązuje różne problemy występujące w Pokoju związane z obsługą danych wejściowych i wyjściowych schematów przy użyciu opcji procesora adnotacji Gradle. Wtyczka Gradle do pokoju konfiguruje projekt w taki sposób, że wygenerowane schematy są używane na potrzeby migracji automatycznych i są dane wyjściowe zadań kompilacji, które są prawidłowo skonfigurowane tak, aby miały możliwe do odtworzenia i buforowane kompilacje. Wtyczka udostępnia DSL do konfigurowania lokalizacji schematu podstawowego:
room {
schemaDirectory("$projectDir/schemas/")
}
Następnie wtyczka skonfiguruje kompilator do pomieszczeń oraz różne zadania i jego backendy (javac, KAPT, KSP) w taki sposób, aby pliki schematu były umieszczane w folderach o różnych nazwach, np. schemas/flavorOneDebug/com.package.MyDatabase/1.json
. Zwykle te pliki są sprawdzane w repozytorium, które służą do weryfikacji i automatycznej migracji. Po przejściu na wtyczkę zamiast opcji procesora adnotacji, musisz skopiować istniejące pliki schematu do wygenerowanych katalogów rodzajów utworzonych przez wtyczkę. Jest to jednorazowa operacja migracji, którą trzeba przeprowadzić ręcznie. Dokumentacja schematu na stronie developers.android.com zostanie zaktualizowana w przyszłości, gdy rozwiążemy problemy z opinią, a wtyczka będzie działać stabilnie, więc warto spróbować.
Zmiany interfejsu API
- Usługa
RoomDatabase.QueryCallback
została zdefiniowana jako funkcjonalny interfejs umożliwiający użycie konwersji SAM. (Iab8ea, b/281008549)
Poprawki błędów
- Rozwiązanie problemu występującego podczas tworzenia instancji bazy danych w Robolectric po migracji źródeł sal z Javy do Kotlin. (Ic053c, b/274924903)
Wersja 2.6.0-alpha01
22 marca 2023 r.
Usługa androidx.room:room-*:2.6.0-alpha01
została zwolniona. Wersja 2.6.0-alfa01 zawiera te zatwierdzenia.
Nowe funkcje
- Obsługa klas wartości w Pokoju na potrzeby KSP. Sala może teraz obsługiwać klasy wartości w elementach. (4194095).
- Generowanie kodu Kotlin(lub „Kotlin CodeGen”) można teraz włączyć w pokoju (4297ec0). Aby włączyć Kotlin CodeGen w pokoju, dodaj nazwę opcji
room.generateKotlin
do opcji procesora dla KSP. Więcej informacji o przekazywaniu opcji procesora na potrzeby KSP znajdziesz w dokumentacji KSP.
Uwaga: podczas korzystania z kotlin CodeGen należy pamiętać, że zostały dodane dodatkowe ograniczenia. Właściwości abstrakcyjne jako metody pobierania DAO lub zapytania DAO w kotlin CodeGen są niedozwolone. Należy je przepisać jako funkcje, aby uniknąć fałszywego przekonania, że wartość właściwości jest niezmienna i ma stały zapisany wynik. Kolejne ograniczenie, które zostało dodane, polega na tym, że w narzędziu Room for Kotlin CodeGen nie są już dozwolone typy zwracanych kolekcji, dla których wartości null są dozwolone.
Ostrzeżenie: podczas korzystania z narzędzia Kotlin CodeGen możesz zauważyć, że Twoje projekty są bardziej rygorystyczne pod względem dopuszczalności wartości null. W Kotlin CodeGen znaczenie argumentów typu null jest istotny, natomiast w Javie ta zasada jest najczęściej ignorowana. Załóżmy na przykład, że masz zwrot typu „Flow<foo\>”, a tabela jest pusta. W Java CodeGen nie spowoduje to żadnych problemów, ale w Kotlin CodeGen pojawi się błąd. Aby tego uniknąć, musisz użyć parametru „Flow<foo?\>” przy założeniu, że emitowana jest wartość null. </foo?\></foo\>
Zmiany interfejsu API
- Ochrona przed bezsensownym wykorzystaniem zbiorów dopuszczalnych do wartości null w typach zwracanych metod DAO. (I777dc, b/253271782, b/259426907)
- Dodaj interfejs API do tworzenia przepływu, który generuje zmiany narzędzia do śledzenia unieważnień. Interfejs API przydaje się do tworzenia strumieni, które muszą reagować na zmiany w bazie danych. (I8c790, b/252899305)
Poprawki błędów
- Nie zezwalaj na właściwości abstrakcyjne w postaci modułów pobierających DAO ani zapytań DAO w codegencie Kotlin. Należy je tylko przepisywać jako funkcje, aby uniknąć fałszywego przekonania, że wartość właściwości jest niezmienna i ma stały zapisany wynik. (If6a13, b/127483380, b/257967987)
Wersja 2.5.2
Wersja 2.5.2
21 czerwca 2023 r.
Usługa androidx.room:room-*:2.5.2
została zwolniona. Wersja 2.5.2 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono problem ze zgodnością pliku kotlinx-metadata-jvm. (386d5c)
- Rozwiązaliśmy problem, który powodował, że podczas korzystania z testu Roboelektrycznego Room zwracał błąd. (f79bea, b/274924903)
Wersja 2.5.1
Wersja 2.5.1
22 marca 2023 r.
Usługa androidx.room:room-*:2.5.1
została zwolniona. Wersja 2.5.1 zawiera te zatwierdzenia.
Poprawki błędów
- Unikaj sprawdzania katalogu nadrzędnego bazy danych w systemie
FrameworkSQLiteHelper
, jeśli baza danych jest już otwarta. (5de86b8) - Użyj kontroli
isOpenInternal
podczas sprawdzania, czy baza danych jest już otwarta. (E91fb35) - Lepsza obsługa zgłoszenia powracającego w pokoju
acquireTransactionThread()
jest już dostępna. (219f98b). Podczas zawieszania transakcji pokój używa wątku od wykonawcy transakcji, uruchamia w nim pętlę zdarzeń i wysyła do niej zawieszenie operacji na bazie danych, dzięki czemu wszystkie są objęte współpracą transakcji. Zwykle wątek transakcji różni się od tego, z którego została rozpoczęta transakcja, ale w niektórych przypadkach są takie same. Aby obsłużyć takie powtarzane przypadki, interfejswithTransaction()
został zrefaktoryzowany, aby nie polegał już na zadaniu sterującym. Zamiast tego uruchomi blok zawieszenia transakcji z poziomurunBlocking
w wątku transakcji.
Wersja 2.5.0
Wersja 2.5.0
22 lutego 2023 roku
androidx.room:room-paging-guava:2.5.0
, androidx.room:room-paging-rxjava2:2.5.0
i androidx.room:room-paging-rxjava3:2.5.0
zostały udostępnione. Wersja 2.5.0 zawiera te zatwierdzenia.
Wersja 2.5.0
11 stycznia 2023 r.
Usługa androidx.room:room-*:2.5.0
została zwolniona. Wersja 2.5.0 zawiera te zatwierdzenia.
Ważne zmiany wprowadzone od wersji 2.4.0
- Wszystkie źródła (
room-runtime
) zostały przekształcone z Javy na Kotlin. Jeśli kod znajduje się w Kotlin, możesz napotkać problemy związane ze zgodnością źródła z powodu konwersji biblioteki na Kotlin. Na przykład znaną zmianą w przypadku niezgodności źródła jest to, że w zasadzieInvalidationTracker
musisz zadeklarować parametronInvalidate()
w elemencieObserver
, aby mieć parametr typuSet
, a nieMutableSet
. Ponadto niektóre metody pobierania zostały przekonwertowane na właściwości wymagające składni dostępu do właściwości w plikach Kotlin. Jeśli występują istotne niezgodności, zgłoś błąd. - Dodano nową adnotację w formie skrótu
@Upsert
, która próbuje wstawić element, gdy nie ma konfliktu unikatowości, lub zaktualizować go w przypadku takiego konfliktu. (I7aaab, b/241964353) - Dodano nowe artefakty stronicowania sal
room-paging-rxjava2
,room-paging-rxjava3
iroom-paging-guava
w celu zapewnienia obsługi stronicowania sal. - Dodano interfejsy API do podawania nazw tabel kluczy i wartości na potrzeby ujednoznacznienia w
@MapInfo
(Icc4b5)
Wersja 2.5.0-rc01
7 grudnia 2022 r.
Usługa androidx.room:room-*:2.5.0-rc01
została zwolniona. Wersja 2.5.0-rc01 zawiera te zatwierdzenia.
- Ta wersja jest taka sama jak
2.5.0-beta02
.
Wersja 2.5.0-beta02
9 listopada 2022 r.
Usługa androidx.room:room-*:2.5.0-beta02
została zwolniona. Wersja 2.5.0-beta02 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Naprawiono różne interfejsy API, które przyjmują argumenty zapytania ze zmiennych (
Array<Any?>
) do kontrastujących (Array<out Any?>
), aby pasowały do zachowania tablic w Javie. (B/253531073)
Wersja 2.5.0-beta01
5 października 2022 r.
Usługa androidx.room:room-*:2.5.0-beta01
została zwolniona. Wersja 2.5.0-beta01 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Ogranicz minimalną wersję obsługującą
@Upsert
do interfejsu API 16. Wynika to z braku możliwości identyfikacji w przypadku konfliktu ograniczenia klucza podstawowego w starszych interfejsach API. (I5f67f, b/243039555)
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że tabele-cienie były nieprawidłowo eksportowane do plików
.json
schematu, co prowadziło do ich uszkodzenia. (I4f83b, b/246751839)
Wersja 2.5.0-alpha03
24 sierpnia 2022 r.
Usługa androidx.room:room-*:2.5.0-alpha03
została zwolniona. Wersja 2.5.0-alfa03 zawiera te zatwierdzenia.
Nowe funkcje
- Dodano nową adnotację w formie skrótu
@Upsert
, która próbuje wstawić element, gdy nie ma konfliktu unikatowości, lub zaktualizować go w przypadku takiego konfliktu. (I7aaab, b/241964353)
Poprawki błędów
- Podczas kontroli ograniczenia klucza obcego podczas automatycznej migracji sala wyśle teraz żądanie
SQLiteConstraintException
zamiastIllegalStateException
. (I328dd) - Popraw niezgodną zmianę źródła Kotlin w metodach pobierania / właściwości
getOpenHelper
,getQueryExecutor
igetTransactionExecutor
. (Iad0ac).
Wersja 2.5.0-alpha02
1 czerwca 2022 r.
Usługa androidx.room:room-*:2.5.0-alpha02
została zwolniona. Wersja 2.5.0-alfa02 zawiera te zatwierdzenia.
Nowe funkcje
- Dodano nowe artefakty
room-paging
room-paging-rxjava2
,room-paging-rxjava3
iroom-paging-guava
, aby obsługiwać stronicowanie sal (41a1d4,b/203666906),(eb6098,b/203666906),(1b9ae4,b/2063).
Zmiany interfejsu API
- Cała platforma
room-runtime
została przekonwertowana z Javy na Kotlin. (If2069, b/206859668),(Ie4b55, b/206859668), (I697ee, b/206859668), (I96c25, b/265b/268}Uwaga: z powodu konwersji biblioteki na Kotlin mogą wystąpić problemy ze zgodnością źródła. Jeśli kod znajdował się w Kotlin i wywołał starą wersję pokoju, nowa wersja będzie musiała obsługiwać te przypadki. Na przykład znaną zmianą w przypadku niezgodności źródła jest to, że w zasadzie
InvalidationTracker
musisz zadeklarować parametronInvalidate()
w elemencieObserver
, aby mieć parametr typuSet
, a nieMutableSet
. - Dodano interfejsy API do podawania nazw tabel kluczy i wartości na potrzeby ujednoznacznienia w
@MapInfo
(Icc4b5) - Rozwiąż problem ze zgodnością źródła, aby ponownie zezwolić na
@Ignore
w modułach pobierających usługi. (Ifc2fb)
Poprawki błędów
- Zduplikowany algorytm heurystyczny do rozpoznawania kolumn. Pokoje będą teraz próbowały rozwiązać niejednoznaczne kolumny w zapytaniu z wieloma mapami. Dzięki temu operatory JOIN z tabelami zawierającymi tabele o tej samej nazwie mogą być prawidłowo mapowane na obiekt danych wynikowych. (I4b444, b/201306012, b/212279118)
Wersja 2.5.0-alpha01
23 lutego 2022 r.
Usługa androidx.room:room-*:2.5.0-alpha01
została zwolniona. Wersja 2.5.0-alfa01 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Rozwiązaliśmy problem, który powodował, że użycie sal
@IntDef
nie było wymuszane w źródłach Kotlin. (I75f41, b/217951311) - Rozwiązaliśmy problem ze zgodnością źródła, aby ponownie dopuścić plik
@Query
w modułach pobierających usługi. (I0a09b) - Przekonwertowano pokój-common z Javy na Kotlin. (I69c48, b/206858235)
Uwaga: mogą wystąpić problemy ze zgodnością źródła, ponieważ niektóre właściwości zostały przeniesione do obiektów towarzyszących podczas konwersji biblioteki na Kotlin. Jeśli kod został utworzony w Kotlin i wywołuje starą wersję pokoju, nowa wersja będzie wymagała rozszerzenia „.Companion” podczas uzyskiwania dostępu do tych właściwości.
- Migracja sal z Javy do Kotlin została przekonwertowana. (I2724b, b/206858622)
- Skonwertowano
paging
powiązane pliki w usłudzeroom-runtime
z Javy na Kotlin. (I82fc8, b/206859668) - Dodano interfejs API do blokowania i używania wieloprocesowych procesów na poziomie FrameworkSQLite*, aby chronić tworzenie i migracje baz danych w ramach pierwszej sesji obejmującej wiele procesów. (Ied267, b/193182592)
Poprawki błędów
- Dodano obsługę właściwości wewnętrznych w źródłach Kotlin.
To jest drobna zmiana w działaniu pokoju, w którym będzie używane źródło
nazwy funkcji podczas dopasowywania ich do właściwości w postaci geterów/seterów
(wcześniej używana była nazwa JVM, która jest inna
funkcji/właściwości wewnętrznych).
Jeśli używasz niestandardowych adnotacji
@JvmName
, aby dopasować elementy pobierające/setki do właściwości prywatnych, sprawdź dokładnie wygenerowany kod po aktualizacja (If6531, b/205289020)
Wersja 2.4.3
Wersja 2.4.3
27 lipca 2022 roku
Usługa androidx.room:room-*:2.4.3
została zwolniona. Wersja 2.4.3 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że w pokoju nie rozpoznawały funkcji zawieszania w Kotlin 1.7 (b/236612358).
Wersja 2.4.2
Wersja 2.4.2
23 lutego 2022 r.
Usługa androidx.room:room-*:2.4.2
została zwolniona. Wersja 2.4.2 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem z generowaniem kodu funkcji zawieszania Dao
@Transaction
z treścią, która generuje domyślną metodę interfejsu w wyniku kompilacji z użyciem-Xjvm-default=all
lub równoważnego elementu. (Ia4ce5). - Naprawiono błąd polegający na tym, że pokój generuje kod dla metody zapytania typu
Array<ByteArray>
zwracanych danych. (If086e, b/213789489)
Wersja 2.4.1
Wersja 2.4.1
12 stycznia 2022 r.
Usługa androidx.room:room-*:2.4.1
została zwolniona. Wersja 2.4.1 zawiera te zatwierdzenia.
Poprawki błędów
- Dodano obsługę właściwości wewnętrznych w źródłach Kotlin.
To jest drobna zmiana w działaniu pokoju, w którym będzie używane źródło
nazwy funkcji podczas dopasowywania ich do właściwości w postaci geterów/seterów
(wcześniej używana była nazwa JVM, która jest inna
funkcji/właściwości wewnętrznych).
Jeśli używasz niestandardowych adnotacji
@JvmName
, aby dopasować elementy pobierające/setki do właściwości prywatnych, sprawdź dokładnie wygenerowany kod po aktualizacja (If6531, b/205289020)
Wersja 2.4.0
Wersja 2.4.0
15 grudnia 2021 roku
Usługa androidx.room:room-*:2.4.0
została zwolniona. Wersja 2.4.0 zawiera te zatwierdzenia.
Ważne zmiany wprowadzone od wersji 2.3.0
- Automatyczne migracje: w pokoju jest teraz dostępny interfejs API do automatycznego generowania migracji, o ile schematy są eksportowane. Aby poinformować pokój o konieczności wygenerowania automatycznej migracji, można użyć nowej usługi
@Database#autoMigrations
do zadeklarowania wersji do automatycznego przenoszenia z i do. Gdy sala potrzebuje dodatkowych informacji na temat zmian nazw lub usuwania tabel i kolumn, adnotacja@AutoMigration
może zadeklarować klasę specyfikacji zawierającą takie dane wejściowe. Więcej informacji znajdziesz w dokumentacji@AutoMigration
. - Wstrzykiwanie zależności w automatycznych migracjach:
@ProvidedAutoMigrationSpec
to nowy interfejs API deklarujący, że interfejsAutoMigrationSpec
będzie udostępniany w czasie działania przezRoomDatabase.Builder#addAutoMigrationSpec()
. Dzięki temu platforma do wstrzykiwania zależności dostarcza takie specyfikacje, gdy potrzebują złożonych zależności. - Pomoc pomocnicza dotycząca testu migracji dla automatycznych migracji: zasób
MigrationTestHelper
pokoju został zaktualizowany, aby obsługiwać automatyczne migracje przez udostępnienie nowego interfejsu API konstruktora, który odbiera testowaną klasę bazy danych. Umożliwi to pomocnikowi automatyczne dodawanie automatycznych migracji w taki sam sposób podczasrunMigrationsAndValidate
. - Obsługa stron pokojowych w wersji 3.0: opublikowaliśmy wersję
androidx.room:room-paging
, która zapewnia natywną obsługę stronicowania w wersji 3.0 w przypadku zapytań o pokoje zwracających wartośćandroidx.paging.PagingSource
. - Relacyjne metody zapytań: sala obsługuje teraz wiele metod zwracanych z użyciem wielu map metod
@Dao
, które są przydatne w przypadku instrukcji JOIN. Obsługiwane typy multimap toMap
,SparseArray
,LongSparseArray
orazImmutableMap
,ImmutableSetMultimap
iImmutableListMultimap
Guawy.
Wersja 2.4.0-rc01
1 grudnia 2021 r.
Usługa androidx.room:room-*:2.4.0-rc01
została zwolniona. Wersja 2.4.0-rc01 zawiera te zatwierdzenia.
Nowe funkcje
- Zaktualizuj zależność Room od KSP do
1.6.0-1.0.1
, aby zapewnić obsługę Kotlin 1.6
Wersja 2.4.0-beta02
17 listopada 2021 r.
Usługa androidx.room:room-*:2.4.0-beta02
została zwolniona. Wersja 2.4.0-beta02 zawiera te zatwierdzenia.
Nowe funkcje
- W obiekcie @MapInfo dodaliśmy obsługę obiektów SparseTrack i LongSparseTrack. (IC91a2b/138910317)
Poprawki błędów
- Dodaliśmy nowy analizator typów konwersji, który przyjmuje wartość null uwzględnij typy informacji. Ta informacja jest dostępna tylko w KSP, jest domyślnie włączony tylko w KSP. Jeśli powoduje to problemy, Można ją wyłączyć, przechodząc Room.useNullAwareTypeAnalysis=false do adnotacji procesora. Jeśli tak się stanie, zgłoś błąd, bo ta flaga zostanie usunięte w przyszłości. Zaleca się, aby w nowym analizatorze TypeConverter przesyłać tylko dane ma wartość niepustą, ponieważ nowy analizator ma możliwość , aby zawinąć je w kodzie zerowym. Nie ma to wpływu na użytkowników używających języka KAPT lub Java procesory adnotacji (w przeciwieństwie do KSP) nie zawierają informacji o dopuszczaniu wartości null typów. (Ia88f9, b/193437407)
- Naprawiono błąd polegający na tym, że pokój nie kompilował się z błędem SQL, gdy jednostka FTS zadeklarowała użycie tokenizatora ICU. (I00db9, b/201753224)
- Rozwiązaliśmy problem z automatycznymi migracjami związany z dodawaniem nowej kolumny do umieszczonego elementu między wersjami. (I5fcb1b/193798291)
- Rozwiązaliśmy problem dotyczący typów zwracanych przez relacyjną metodę zapytań w zapytaniach LEFT JOIN. Po tych zmianach w przypadku mapowania 1-wiele zwracana dla klucza kolekcja zwrócona dla klucza nie będzie zawierała nieprawidłowego obiektu wartości, o ile nie zostanie on znaleziony w kursorze. Jeśli nie zostaną znalezione żadne prawidłowe wartości, klucz zostanie zmapowany na pustą kolekcję. (Id5552b/201946438)
- Rozwiązaliśmy problem z automatyczną migracją, który powodował, że nie udało się zmienić znaczenia słów kluczowych SQLite w nazwach kolumn. (Idbed4b/197133152)
Wersja 2.4.0-beta01
13 października 2021 r.
Usługa androidx.room:room-*:2.4.0-beta01
została zwolniona. Wersja 2.4.0-beta01 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że podczas automatycznej migracji nie dodawało nowych kolumn, gdy inna tabela w tej samej migracji automatycznej również miała nową kolumnę o tej samej nazwie. (Ia5db5, b/200818663)
- Implementacja PagingSource teraz wygenerowana przez stronicowanie sal
korzysta z funkcji
queryExecutor
przekazywanych przezRoomDatabase.Builder
, dzięki czemu może zostanie zastąpiony, a nieDispatchers.IO
. (IAE259).
Wersja 2.4.0-alpha05
29 września 2021 r.
Usługa androidx.room:room-*:2.4.0-alpha05
została zwolniona. Wersja 2.4.0-alfa05 zawiera te zatwierdzenia.
Nowe funkcje
- Dodano wbudowany konwerter typu dla UUID. (I671e8, b/73132006)
Zmiany interfejsu API
Dodaliśmy do adnotacji TypeConverters nową właściwość, aby umożliwić programistom wyłączenie wbudowanych konwerterów Enum i UUID. Domyślnie te konwertery są włączone, ale możesz je wyłączyć dla określonego zakresu lub dla całej bazy danych. Szczegółowe informacje znajdziesz w dokumentacji TypeConverters. (36ae9e, b/195413406)
Obsługa kluczy/wartości innych niż POJO w przypadku zwracania typów wielu map w DAO przez adnotację
@MapInfo
. (I4d704)
Kolumna @MapInfo
będzie wymagana, gdy kolumna klucza lub wartości na mapie pochodzi z jednej kolumny. Zobacz przykład:
@MapInfo(valueColumn = "songCount")
@Query("""
SELECT *, COUNT(mSongId) as songCount
FROM Artist JOIN Song ON Artist.artistName = Song.artist
GROUP BY artistName
""")
fun getArtistAndSongCounts(): Map<Artist, Integer>
- Ustaw
room-paging
jako wymagany artefakt, gdy używasz strony 3 z pokojem. (Ieaffe)
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że wyniki zapytań obejmujących wiele map nie były prawidłowo uporządkowane, gdy zapytanie zawierało klauzulę ORDER BY dla kolumny z klucza mapy. (I6B887)
Treści tłumaczone przez użytkowników zewnętrznych
- Dodano nowy interfejs API do określania kolejności indeksu w @Index. Dzięki Nikity Zhelonkin. (I033fc)
Wersja 2.4.0-alpha04
21 lipca 2021 r.
Usługa androidx.room:room-*:2.4.0-alpha04
została zwolniona. Wersja 2.4.0-alfa04 zawiera te zatwierdzenia.
Nowe funkcje
Sala obsługuje teraz metody zwracania wielu map w różnych typach
@Dao
, które są przydatne w przypadku instrukcji JOIN. Obsługiwane typy multimap toMap
orazImmutableMap
,ImmutableSetMultimap
iImmutableListMultimap
Guawy.Oto przykłady zapytań multimapowych:
Mapa relacji jeden do jednego
@Query("SELECT * FROM Song JOIN Artist ON Song.artistId = Artist.artistId") fun getSongAndArtist(): Map<Song, Artist>
Mapa relacji jeden do wielu (standardowa multimapa)
@Query("SELECT * FROM Artist JOIN Album ON Artist.id = Album.artistId") fun getArtistAndAlbums(): Map<Artist, List<Album>>
Wynik multimapowania może być również zawarty w obsługiwanych typach zwracanych asynchronicznych, takich jak
LiveData
,Observable
Rx czy współrzędneFlow
.
Tworzenie pokoju
Udostępniamy usługę
androidx.room:room-paging
, która zapewnia natywną obsługę stronicowania 3.0 w przypadku zapytań o pokoje zwracających wartośćandroidx.paging.PagingSource
.@Dao interface UserDao { @Query("SELECT * FROM users ORDER BY id ASC") fun loadUsers(): PagingSource<Int, User> }
Ten artefakt zastępuje implementację
androidx.paging.PagingSource
wygenerowaną przez pokój inną implementacją opartą na interfejsach API stronicowania 3.0. Nowa implementacja PagingSource analizuje klucze w inny sposób, więc każdy klucz ręcznie dostarczony do strony PagingSource dla pokoju będzie musiał uwzględnić tę zmianę w działaniu, w tym klucz initialKey przekazywany za pomocą konstruktora Pager. Wczytywanie stron rozpocznie się odKey
, przy czym jako pierwszy wczytany będzie elementKey
. Odbiega to od obecnego sposobu działania, w którymLoadParams.Refresh.Key
jest traktowany jako pozycja przewijania użytkownika, a elementy są wczytywane zarówno przed kluczem, jak i po nim.Artefakt jest opcjonalny, a rezygnacja spowoduje przywrócenie dotychczasowej obsługi strony w wersji 3.0 wprowadzonej w pokoju 2.3. W przyszłej wersji ten artefakt nie będzie jednak opcjonalny dla osób korzystających z pokoju ze stronami w wersji 3.0. Aby wyrazić na to zgodę, dodaj nowy artefakt stronicowania sali do ścieżki zajęć. Jeśli używasz Gradle, możesz dodać do pliku build.gradle ten fragment kodu:
dependency { implementation("androidx.room:room-paging:2.4.0-alpha04") }
Poprawki błędów
- Naprawiono błąd automatycznej migracji dotyczący obsługi naruszeń kluczy obcych. (B/190113935)
Wersja 2.4.0-alpha03
16 czerwca 2021 r.
Usługa androidx.room:room-*:2.4.0-alpha03
została zwolniona. Wersja 2.4.0-alfa03 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Zaktualizuj obiekt
MigrationTestHelper
pokoju, aby obsługiwał automatyczne migracje, udostępniając nowy interfejs API konstruktora, który odbiera testowaną klasę bazy danych. Umożliwi to pomocnikowi automatyczne dodawanie automatycznych migracji w taki sam sposób podczasrunMigrationsAndValidate
.
Poprawki błędów
Rozwiązaliśmy problem z natywną biblioteką SQLite w Pokoju, która obsługiwała układy Apple M1. (b/174695268
Rozwiązaliśmy problem, który powodował, że funkcja Room nie zwracała błędów, gdy zwracanym typem funkcji @Transaction był Flow (I56ddd, b/190075899).
Naprawiono błąd dotyczący indeksów w automatycznej migracji. b/177673291
Aktualizacje zależności
- Obsługa klucza KSP pokoju zależy teraz od klucza KSP
1.5.10-1.0.0-beta01
. (1ecb11, b/160322705)
Wersja 2.4.0-alpha02
5 maja 2021 roku
Usługa androidx.room:room-*:2.4.0-alpha02
została zwolniona. Wersja 2.4.0-alfa02 zawiera te zatwierdzenia.
Zmiany interfejsu API
@ProvidedAutoMigrationSpec
to nowy interfejs API służący do deklarowania, że zasóbAutoMigrationSpec
będzie udostępniany w czasie działania za pomocąRoomDatabase.Builder#addAutoMigrationSpec()
. Dzięki temu platforma do wstrzykiwania zależności dostarcza takie specyfikacje, gdy potrzebują złożonych zależności.
Poprawki błędów
- Rozwiązywanie problemów z automatycznymi migracjami, w przypadku których nie są prawidłowo tworzone obiekty
@DatabaseView
.
Treści tłumaczone przez użytkowników zewnętrznych
- Rozwiąż problem w pokoju
JournalMode.TRUNCATE
, w którym wywołanie zwrotneInvalidationTracker
było czasami wywoływane nieprawidłowo, za późno lub w ogóle nie było możliwe. DziękiUli Bubenheimer | bubenheimer@users.noreply.github.com
(b/154040286)
Wersja 2.4.0-alpha01
21 kwietnia 2021 r.
Usługa androidx.room:room-*:2.4.0-alpha01
została zwolniona. Wersja 2.4.0-alfa01 zawiera te zatwierdzenia.
Nowe funkcje
- Automatyczne migracje: w pokoju jest teraz dostępny interfejs API do automatycznego generowania migracji, o ile schematy są eksportowane. Aby poinformować pokój o konieczności wygenerowania automatycznej migracji, można użyć nowej usługi
@Database#autoMigrations
do zadeklarowania wersji do automatycznego przenoszenia z i do. Gdy sala potrzebuje dodatkowych informacji na temat zmian nazw lub usuwania tabel i kolumn, adnotacja@AutoMigration
może zadeklarować klasę specyfikacji zawierającą takie dane wejściowe. Więcej informacji znajdziesz w dokumentacji@AutoMigration
.
Poprawki błędów
- Rozwiąż problem, który powodował, że pole
defaultValue
z dodatkowym nawiasem było niewłaściwie weryfikowane podczas weryfikacji schematu pokoju. b/182284899
Wersja 2.3.0
Wersja 2.3.0
21 kwietnia 2021 r.
Usługa androidx.room:room-*:2.3.0
została zwolniona. Wersja 2.3.0 zawiera te zatwierdzenia.
Ważne zmiany wprowadzone od wersji 2.2.0
- Wbudowana obsługa wyliczenia: jeśli nie podano żadnej wartości, sala będzie domyślnie używać konwertera typu enum na ciąg znaków i na odwrót. Jeśli istnieje już konwerter typów dla wyliczenia, sala będzie używać go w pierwszej kolejności, a nie domyślnego.
- Wywołanie zwrotne zapytania: w pokoju jest teraz dostępny ogólny interfejs API z wywołaniami zwrotnymi RoomDatabase.QueryCallback, który jest używany przy wykonywaniu zapytań, co może być przydatne przy logowaniu kompilacji debugowania. Oddzwanianie można ustawić w
RoomDatabase.Builder#setQueryCallback()
. - Udoskonalenie gotowe do użycia: sala ma teraz interfejsy API do tworzenia bazy danych na podstawie gotowej bazy danych odczytywanej ze strumienia wejściowego. Pozwala to na przykład na skompresowanie bazy danych gotowej do użycia w pakiecie.
- Udostępnione konwertery typów: pokój ma teraz interfejsy API umożliwiające udostępnianie instancji konwerterów typów, aby aplikacja mogła kontrolować ich inicjowanie. Aby oznaczyć konwerter typu, który zostanie udostępniony do pokoju, użyj nowej adnotacji @ProvidedTypeConverter.
- Obsługa RxJava3: pokój obsługuje teraz typy RxJava3. Podobnie jak w przypadku RxJava2, możesz zadeklarować metody DAO, których typ zwracania to Flowable, Single, może i Competable. Dostępny jest też nowy artefakt
androidx.room:room-rxjava3
do obsługi RxJava3. - Obsługa pozycjonowania 3.0: sala będzie teraz obsługiwać generowanie implementacji dla metod
@Query
z adnotacjami, dla których zwracany jest typandroidx.paging.PagingSource
.
Wersja 2.3.0-rc01
24 marca 2021 r.
Usługa androidx.room:room-*:2.3.0-rc01
została zwolniona. Wersja 2.3.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem, który uniemożliwiał wykorzystanie zapytań Przepływu Coroutine utworzonych przez pokój w zawieszonym bloku
withTransaction
. (I797bf)
Wersja 2.3.0-beta03
10 marca 2021 r.
Usługa androidx.room:room-*:2.3.0-beta03
została zwolniona. Wersja 2.3.0-beta03 zawiera te zatwierdzenia.
Nowe funkcje
- Dodano obsługę kompilacji przyrostowej dla KSP. (I031c1, b/176453350)
Poprawki błędów
- Naprawiliśmy błąd polegający na tym, że utworzenie PagingSource w wątku głównym mogło powodować błąd ANR. (I42b74, b/181221318)
- Naprawiono widoczność pakietu
@ExperimentalRoomApi
na publiczny, a nie prywatny. (b/181356119)
Treści tłumaczone przez użytkowników zewnętrznych
- Zezwalaj na akceptowanie typu zwrotu POJO w metodzie DAO z adnotacjami
@Query
, gdy jest ona również oznaczona adnotacją@SkipQueryVerification
. Sala dołoży wszelkich starań, aby przekonwertować wynik zapytania na zwracany typ funkcji POJO w taki sam sposób, jak w przypadku metody DAO z adnotacjami@RawQuery
. Dzięki: „Markus Riegel | hej@marcorei.com”. (I45acb)
Wersja 2.3.0-beta02
18 lutego 2021 r.
Usługa androidx.room:room-*:2.3.0-beta02
została zwolniona. Wersja 2.3.0-beta02 zawiera te zatwierdzenia.
Nowe funkcje
W pokoju jest teraz dostępna eksperymentalna obsługa KSP przetwarzania symboli Kotlin.
KSP to zamiennik KAPT, który pozwala na natywne uruchamianie procesorów adnotacji w kompilatorze Kotlin, co znacznie skraca czas kompilacji.
Aby używać pokoju z KSP, możesz zastosować wtyczkę do Gradle KSP i zastąpić konfigurację
kapt
w pliku kompilacji kodemksp
. Na przykład zamiastkapt 'androidx.room:room-compiler:2.3.0-beta02'
użyj właściwościksp 'androidx.room:room-compiler:2.3.0-beta02'
. Więcej informacji znajdziesz w dokumentacji KSP.Pamiętaj, że klucz KSP to funkcja eksperymentalna, dlatego zalecamy nadal używać KAPT w kodzie produkcyjnym. Skrócenie czasu kompilacji ma zastosowanie tylko wtedy, gdy żadne inne procesory nie używają KAPT. Informacje o znanych problemach znajdziesz na stronie b/160322705.
Wersja 2.3.0-beta01
27 stycznia 2021 r.
Usługa androidx.room:room-*:2.3.0-beta01
została zwolniona. Wersja 2.3.0-beta01 zawiera te zatwierdzenia.
Nowe funkcje
- Automatycznie zamykane bazy danych: pokój może teraz zamykać bazy danych, do których nie masz dostępu po określonym czasie. To jest funkcja eksperymentalna, którą można włączyć, wywołując metodę
RoomDatabase.Builder#setAutoCloseTimeout()
. Ta funkcja jest przydatna w aplikacjach z wieloma bazami danych.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że metody DAO z kilkoma metodami
@Update
lub@Delete
z różnymi strategiami konfliktu generowały kod tylko z jedną ze strategii, co w praktyce powodowało zignorowanie zdefiniowanej. (/I0b90d, b/176138543)
Wersja 2.3.0-alfa04
16 grudnia 2020 roku
Usługa androidx.room:room-*:2.3.0-alpha04
została zwolniona. Wersja 2.3.0-alfa04 zawiera te zatwierdzenia.
Nowe funkcje
- Room oferuje teraz ogólny interfejs API z wywołaniami zwrotnymi
RoomDatabase.QueryCallback
, który jest używany przy wykonywaniu zapytań, co może być przydatne przy logowaniu kompilacji do debugowania. Oddzwanianie można ustawić wRoomDatabase.Builder#setQueryCallback()
. (Iaa513, b/174478034, b/74877608) - W pokoju domyślnie będzie używany konwerter typu Enum na ciąg znaków i na odwrót, jeśli nie zostanie podana żadna wartość. Jeśli istnieje już konwerter typów dla wyliczenia, sala będzie używać go w pierwszej kolejności, a nie domyślnego. (B/73132006)
Znany problem
- Jeśli istnieje już konwerter jednokierunkowy do odczytu dla enum, pokój może przypadkowo użyć wbudowanego konwertera String to Enum, co może być niepożądane. To znany problem, który można rozwiązać, zmieniając tryb konwertera dwukierunkowego. Zobacz: b/175707691
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że w nowszych wersjach pakietu JDK usługa Room nieprawidłowo wyłączała przyrostowe przetwarzanie adnotacji. (b/171387388)
- Rozwiązaliśmy problem, który powodował, że sala znajdowała wygenerowaną klasę w przypadku użycia wielu programów ładujących. Dziękujemy za rozwiązanie problemu „Serendipity | 892449346@qq.com”. (B/170141113)
- Rozwiązaliśmy problem, który powodował, że funkcja Room generowała nieprawidłowy kod, gdy obiekt
@Dao
Kotlin miał klasę bazową, której generacje ogólne są elementami podstawowymi w JVM. (B/160258066)
Treści tłumaczone przez użytkowników zewnętrznych
- Jeśli włączony jest tryb WAL, a interfejs API ma wartość 16 lub wyższą, w sali będzie teraz domyślnie używać
beginTransactionNonExclusive
. Dzięki „Ahmedowi I. Khalil | ahmedibrahimkhali@gmail.com”. (b/126258791)
Wersja 2.3.0-alfa03
14 października 2020 r.
Usługa androidx.room:room-*:2.3.0-alpha03
została zwolniona. Wersja 2.3.0-alfa03 zawiera te zatwierdzenia.
Nowe funkcje
Pokoje mają teraz interfejsy API umożliwiające udostępnianie instancji konwerterów typów, aby aplikacja mogła kontrolować ich inicjowanie. Aby oznaczyć konwerter typu, który zostanie udostępniony do pokoju, użyj nowej adnotacji
@ProvidedTypeConverter
. Dziękujemy za kontakt z adresem „mzgreen yairobbe@gmail.com”. (Ie4fa5, b/121067210)Pokoje mają teraz interfejsy API do tworzenia bazy danych za pomocą już spakowanej bazy danych odczytanej ze strumienia wejściowego. Pozwala to na przykład na skompresowanie bazy danych gotowej do użycia w pakiecie. Podziękowania od Ahmed El-Helw ahmedre@gmail.com (3e6792, b/146911060)
Zmiany interfejsu API
Dodano brakującą wartość docelową do adnotacji
@ForeignKey
, uniemożliwiając jej użycie poza adnotacją@Entity
. (Iced1e).Pole
mCallbacks
wRoomDatabase.java
jest teraz ukryte. (D576cb, b/76109329)
Poprawki błędów
Aktualizacja dokumentacji TypeConverters, która wyjaśnia, że obiektów TypeConverters można używać tylko do konwertowania kolumn / pól, a nie wierszy. (I07c56, b/77307836)
Zaktualizuj DaoProcessor, aby naprawić błąd kompilatora w Dao za pomocą ogólnego typu supertypu z „elementami podstawowymi” Kotlin. (Ice6bb, b/160258066)
Zaktualizuj dokumentację metod dodawania/usuwania obserwatorów, aby ułatwić zrozumienie wątków (Ifd1d9, b/153948821)
Rozwiązanie problemu polegającego na tym, że pokój nieprawidłowo weryfikuje tabele FTS, które zadeklarowały kolumnę identyfikatora wiersza. (D62ebc, b/145858914)
Treści tłumaczone z zewnątrz
Napraw problemy związane z małymi i wielkimi literami w języku tureckim (5746e3), b/68159494
Zamień
ConcurrentHashMap
wRoomDatabase
naCollections.synchronizedMap()
, by uniknąć problemów na Androidzie Lollipop (d1cfc7, b/162431855)Dodaj wywołanie zwrotne onOpenPrepackagedDatabase, gdy jest gotowy pakiet Baza danych została skopiowana. (I1ba74, b/148934423)
Wersja 2.3.0-alfa02
22 lipca 2020 r.
Usługa androidx.room:room-*:2.3.0-alpha02
została zwolniona. Wersja 2.3.0-alfa02 zawiera te zatwierdzenia.
Nowe funkcje
- Obsługa RxJava3: pokój obsługuje teraz typy RxJava3. Podobnie jak w przypadku RxJava2, możesz zadeklarować metody DAO, których typ zwracania to Flowable, Single, może i Competable. Dostępny jest też nowy artefakt
androidx.room:room-rxjava3
do obsługi RxJava3. (b/152427884)
Zmiany interfejsu API
- Deklarowanie
@TypeConverter
w klasie obiektu Kotlin jest teraz obsługiwane. (B/151110764) - Opcja przyrostowego przetwarzania adnotacji w pokoju jest teraz domyślnie WŁĄCZONA. (b/112110217)
Wersja 2.3.0-alfa01
10 czerwca 2020 r.
Usługa androidx.room:room-*:2.3.0-alpha01
została zwolniona. Wersja 2.3.0-alfa01 zawiera te zatwierdzenia.
Nowe funkcje
Obsługa strony AMP 3.0: sala będzie teraz obsługiwać generowanie implementacji dla
@Query
metod z adnotacjami, dla których zwracany jest typandroidx.paging.PagingSource
.@Dao interface UserDao { @Query("SELECT * FROM users ORDER BY id ASC") fun pagingSource(): PagingSource<Int, User> }
Zmiany interfejsu API
@RewriteQueriesToDropUnusedColumns
to nowa, wygodna adnotacja, która sprawia, że rzut „*” w zapytaniu zmienia się w taki sposób, że nieużywane kolumny z wyników są usuwane.- Opcja procesora
room.expandProjection
została wycofana. Używaj usługi@RewriteQueriesToDropUnusedColumns
jako zamiennika zapytań dotyczących optymalizacji sal przy użyciu przewidywanej liczby gwiazdek. Pamiętaj, że funkcja@RewriteQueriesToDropUnusedColumns
nie zastępuje dostępnego rozwiązaniaroom.expandProjection
konfliktu kolumn w przypadku typów zwracanych zawierających pola@Embedded
.
Poprawki błędów
- Naprawiono błąd polegający na tym, że usługa Room nie wykrywała poprawnie wersji JDK używanej do włączania przyrostowego procesora adnotacji. Dzięki Blaz Solar (me@blaz.solar) (b/155215201)
- Aby uniknąć konfliktów wersji z innymi procesorami, które również używają protokołu ANTLR, pokój umieszcza teraz zależność ANTLR na procesorze adnotacji. (B/150106190)
Wersja 2.2.6
Wersja 2.2.6
16 grudnia 2020 roku
Usługa androidx.room:room-*:2.2.6
została zwolniona. Wersja 2.2.6 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że w nowszych wersjach pakietu JDK usługa Room nieprawidłowo wyłączała przyrostowe przetwarzanie adnotacji. (b/171387388)
Wersja 2.2.5
Wersja 2.2.5
18 marca 2020 r.
Usługa androidx.room:room-*:2.2.5
została zwolniona. Wersja 2.2.5 zawiera te zatwierdzenia.
Poprawki błędów
- Włącz funkcję
MultiInstanceInvalidationService
directBootAware. Podziękowania od „Mygod contact-git@mygod.be” (b/148240967) - Naprawiliśmy błąd, który powodował awarię, gdy włączone było unieważnianie wielu instancji, a baza danych zawierała encję FTS. (b/148969394)
- Rozwiązaliśmy problem, który występował podczas wczytywania natywnych bibliotek SQLite w procesorze adnotacji w pokoju, który powodował awarię kompilatora ze względu na kompilację równoległą. (B/146217083)
Wersja 2.2.4
Wersja 2.2.4
19 lutego 2020 r.
Udostępniono androidx.room:room-common:2.2.4
, androidx.room:room-compiler:2.2.4
, androidx.room:room-guava:2.2.4
, androidx.room:room-ktx:2.2.4
, androidx.room:room-migration:2.2.4
, androidx.room:room-runtime:2.2.4
, androidx.room:room-rxjava2:2.2.4
i androidx.room:room-testing:2.2.4
. Wersja 2.2.4 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem z zawieszaniem transakcji, które powodowały zakleszczenie, jeśli współrzędna została anulowana szybko przed faktycznym rozpoczęciem transakcji. (b/148181325)
- Rozwiązaliśmy problem z nieprawidłowym używaniem tagu @Generated podczas tworzenia za pomocą JDK 9. (B/146538330)
- Rozwiązaliśmy problem, który powodował, że usługa Room generowała nieprawidłowy kod, gdy interfejs DAO w Kotlin miał konkretną funkcję. (b/146825845)
Wersja 2.2.3
Wersja 2.2.3
18 grudnia 2019 r.
Usługa androidx.room:room-*:2.2.3
została zwolniona. Wersja 2.2.3 zawiera te zatwierdzenia.
Poprawki błędów.
- Naprawiono błąd polegający na tym, że usługa Room nie mogła zweryfikować bazy danych, która nie została poddana żadnej migracji i zawierała w schemacie starszy hasz z indeksami. (B/139306173)
Wersja 2.2.2
Wersja 2.2.2
20 listopada 2019 r.
Usługa androidx.room:room-*:2.2.2
została zwolniona. Wersja 2.2.2 zawiera te zatwierdzenia.
Poprawki błędów.
- Naprawiono błąd, który powodował, że zbieranie relacji 1:1 z ponad 999 wierszami skutkowało zwróceniem przez pokój powiązanych elementów o wartości null. (B/143105450)
Wersja 2.2.1
Wersja 2.2.1
23 października 2019 r.
Usługa androidx.room:room-*:2.2.1
została zwolniona. Wersja 2.2.1 zawiera te zatwierdzenia.
Poprawki błędów.
- Naprawiono błąd polegający na tym, że pokój błędnie ostrzegał o kodzie
CURSOR_MISMATCH
przy włączonej opcji kompilatoraexpandProjection
. (b/140759491) - Dodano mechanizm ponawiania prób obsługi brakującej biblioteki natywnej używanej do weryfikacji zapytań podczas kompilowania.
Wersja 2.2.0
Wersja 2.2.0
9 października 2019 r.
Usługa androidx.room:room-*:2.2.0
została zwolniona. Wersja 2.2.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 2.1.0
- Gotowa baza danych: w usłudze
RoomDatabase.Builder
są teraz dostępne dwa nowe interfejsy API dostępne do utworzeniaRoomDatabase
dla danej już zapełnionej bazy danych .createFromAsset()
jest stosowany w przypadku, gdy wstępnie wypełniony plik bazy danych znajduje się w folder zasobów pakietu APK, acreateFromFile()
– do przechowywania pliku w dowolnej lokalizacji. Zastosowania tego interfejsu API zmieniają zachowanie niszczycielskich migracji, w wyniku których podczas migracji awaryjnej pokój próbuje ponownie skopiuje wstępnie wypełnioną bazę danych, jeśli jest dostępna. W przeciwnym razie przez upuszczenie i ponowne utworzenie wszystkich tabel. b/62185732 - Domyślne wartości schematu:
@ColumnInfo
ma teraz nową właściwośćdefaultValue
umożliwia określenie domyślnej wartości kolumny. Wartości domyślne to są częścią schematu bazy danych i będą weryfikowane podczas migracji, jeśli określone dane. b/64088772 - Relacje między wieloma zasobami:
@Relation
ma teraz nową właściwośćassociateBy
, która przyjmuje nową adnotację@Junction
, używaną do zadeklarowania relacji, która musi być spełniony za pomocą tabeli połączeń (zwanej też tabelą złączenia). b/69201917 - Relacje 1:1: ograniczenia w polach POJO z adnotacjami
Opcja
@Relation
typuList
lubSet
została pomyślnie podniesiona co umożliwia reprezentowanie relacji jednowartościowych. b/62905145 - Jednostka docelowa: teraz adnotacje DAO:
@Insert
,@Update
i@Delete
ma nową właściwośćtargetEntity
, która umożliwia określenie tabeli docelowej Metoda DAO ma działać. Pozwala to na określenie parametrów DAO w postaci arbitralnych rozwiązań, które będą interpretowane jako podmioty częściowe. W praktyce pozwala to na częściowe wstawianie, usuwanie i aktualizowanie. b/127549506 - Przepływ koronek: metody DAO (
@Query
) mogą teraz zwracać typ zwracanyFlow<T>
. Zwrócony przepływ ponownie wyemituje nowy zbiór wartości, jeśli tabele obserwowane w zapytanie zostaje unieważnione. Deklarowanie funkcji DAO ze zwrotemChannel<T>
jest błędem, a pokój zachęca do użycia właściwościFlow
, a następnie użycia sąsiednie funkcje, aby przekonwertowaćFlow
naChannel
. b/130428884 - Procesor adnotacji przyrostowych Gradle: pokój jest teraz izolowany przez Gradle
można włączyć procesor adnotacji i przyrost wartości za jego pomocą
opcja
room.incremental
. Zobacz Opcje narzędzia do kompilatora sal . Jeśli napotkasz jakieś problemy, prześlij tutaj. Planujemy domyślnie włączyć możliwość zwiększania liczby w przyszłej wersji stabilnej. b/112110217 - Rozwijane prognozy: nowa, eksperymentalna opcja kompilatora
Dodano parametr
room.expandProjection
, który powoduje przepisywanie zapytań przez pokój odwzorowanie gwiazdy tak, aby uwzględnić tylko kolumny w powracającym typie POJO. Dla: w przypadku metody DAO z parametrem@Query("SELECT * FROM Song")
, która zwraca POJO o nazwieSongIdAndTitle
z tylko 2 polami. Następnie pokój ponownie zapisze do funkcjiSELECT id, title FROM Song
tak, aby minimalny zestaw kolumn , aby zrealizować zwracany typ. Dzięki temu zasadniczo eliminuje toCURSOR_MISMATCH
ostrzeżenie, które jest wyświetlane, gdy zapytanie zwraca dodatkowe kolumny, które nie pasują do żadnego pola w powracającym typie zamówienia.
Wersja 2.2.0-rc01
5 września 2019 r.
Usługa androidx.room:room:2.2.0-rc01
została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Brak zmian publicznych od sali 2.2.0-beta01
.
Wersja 2.2.0-beta01
22 sierpnia 2019 r.
Usługa androidx.room:room-*:2.2.0-beta01
została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Poprawki błędów.
- Naprawiliśmy błąd polegający na tym, że zapytanie Przepływ Coroutine po pewnym czasie przestaje wysyłać nowe wartości. (b/139175786)
- Naprawiono błąd, który powodował, że usługa Room nie akceptowała starszego kodu skrótu schematu po otwarciu bazy danych, która nie została przeniesiona od wersji 1.0, co powodowało awarię w czasie działania z powodu nieprawidłowego schematu. (B/139306173)
Wersja 2.2.0-alfa02
7 sierpnia 2019 r.
Usługa androidx.room:room-*:2.2.0-alpha02
została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Nowe funkcje
- Przepływ koronek: metody DAO (
@Query
) mogą teraz zwracać typ zwracanyFlow<T>
. Zwrócony przepływ ponownie wyemituje nowy zbiór wartości, jeśli tabele obserwowane w zapytanie zostaje unieważnione. Deklarowanie funkcji DAO ze zwrotemChannel<T>
jest błędem, a pokój zachęca do użycia właściwościFlow
, a następnie użycia sąsiednie funkcje, aby przekonwertowaćFlow
naChannel
. b/130428884 - Rozwijane prognozy: nowa, eksperymentalna opcja kompilatora
Dodano parametr
room.expandProjection
, który powoduje przepisywanie zapytań przez pokój odwzorowanie gwiazdy tak, aby uwzględnić tylko kolumny w powracającym typie POJO. Dla: w przypadku metody DAO z parametrem@Query("SELECT * FROM Song")
, która zwraca POJO o nazwieSongIdAndTitle
z tylko 2 polami. Następnie pokój ponownie zapisze do funkcjiSELECT id, title FROM Song
tak, aby minimalny zestaw kolumn , aby zrealizować zwracany typ. Dzięki temu zasadniczo eliminuje toCURSOR_MISMATCH
ostrzeżenie, które jest wyświetlane, gdy zapytanie zwraca dodatkowe kolumny, które nie pasują do żadnego pola w powracającym typie zamówienia. onDestructiveMigrate
to nowy interfejs API wywołania zwrotnego dodany doRoomDatabase.Callback
. b/79962330
Poprawki błędów
- Usunęliśmy błąd polegający na tym, że pokój generował nieprawidłowy kod przy użyciu metody jako pola. Gdy pole jest chronione. b/136194628
- Naprawiono błąd, który powodował, że narzędzie invalidationTracker w ciągu sekundy wysyłało NPE proces, w którym włączono unieważnianie wielu instancji i unieważnianie. Serwis został zatrzymany. b/137454915
- Naprawiono błąd polegający na tym, że usługa Room nie poprawnie identyfikujeła typu zwrotu
odziedziczona funkcja zawieszania z adnotacją
@RawQuery
. b/137878827 - Zaktualizowano wygenerowany kod dla
@Relation
, gdy powiązany klucz jest typu BLOB w celu zastosowania porównywalnej wartościByteBuffer
. b/137881998 - Naprawiono błąd, który powodował, że w pokoju narzekały się na zaginione osoby w POJO używane jako
częściowe parametry encji
@Insert
,@Update
i@Delete
. b/138664463 - Naprawiono błąd, przez który w pokoju narzekał się na zaginione postacie setki na
ignorowana kolumna w elemencie
@Entity
, gdy klasa encji była używana w określonym DAO . b/138238182 - Naprawiono błąd polegający na tym, że pokój nie konwertował prawidłowo argumentów wiązania nazwanych na argumenty pozycjonujące powodujące wyjątek środowiska wykonawczego podczas wykonywania zapytania i ponownie użytych parametrach. b/137254857
Wersja 2.2.0-alpha01
10 lipca 2019 r.
Nowe funkcje
- Gotowa baza danych: w usłudze
RoomDatabase.Builder
są teraz dostępne dwa nowe interfejsy API dostępne do utworzeniaRoomDatabase
dla danej już zapełnionej bazy danych .createFromAsset()
jest stosowany w przypadku, gdy wstępnie wypełniony plik bazy danych znajduje się w folder zasobów pakietu APK, acreateFromFile()
– do przechowywania pliku w dowolnej lokalizacji. Zastosowania tego interfejsu API zmieniają zachowanie niszczycielskich migracji, w wyniku których podczas migracji awaryjnej pokój próbuje ponownie skopiuje wstępnie wypełnioną bazę danych, jeśli jest dostępna. W przeciwnym razie przez upuszczenie i ponowne utworzenie wszystkich tabel. b/62185732 - Domyślne wartości schematu:
@ColumnInfo
ma teraz nową właściwośćdefaultValue
umożliwia określenie domyślnej wartości kolumny. Wartości domyślne to są częścią schematu bazy danych i będą weryfikowane podczas migracji, jeśli określone dane. b/64088772Uwaga: jeśli schemat bazy danych ma już wartość domyślną , takie jak te dodane za pomocą
ALTER TABLE x ADD COLUMN y INTEGER NOTNULL DEFAULT z
, i decydujesz się zdefiniować wartości domyślne w funkcji@ColumnInfo
tych samych kolumn, może być konieczne przeprowadzenie migracji w celu sprawdzenia poprawności nieuwzględnione wartości domyślne. Zobacz Migracje sal . - Relacje między wieloma zasobami:
@Relation
ma teraz nową właściwośćassociateBy
, która przyjmuje nową adnotację@Junction
, używaną do zadeklarowania relacji, która musi być spełniony za pomocą tabeli połączeń (zwanej też tabelą złączenia). b/69201917 - Relacje 1:1: ograniczenia w polach POJO z adnotacjami
Opcja
@Relation
typuList
lubSet
została pomyślnie podniesiona co umożliwia reprezentowanie relacji jednowartościowych. b/62905145 - Jednostka docelowa: teraz adnotacje DAO:
@Insert
,@Update
i@Delete
ma nową właściwośćtargetEntity
, która umożliwia określenie tabeli docelowej Metoda DAO ma działać. Pozwala to na określenie parametrów DAO w postaci arbitralnych rozwiązań, które będą interpretowane jako podmioty częściowe. W praktyce pozwala to na częściowe wstawianie, usuwanie i aktualizowanie. b/127549506 - Procesor adnotacji przyrostowych Gradle: pokój jest teraz izolowany przez Gradle
można włączyć procesor adnotacji i przyrost wartości za jego pomocą
opcja
room.incremental
. Zobacz Opcje narzędzia do kompilatora sal . Jeśli napotkasz jakieś problemy, prześlij tutaj. Planujemy domyślnie włączyć możliwość zwiększania liczby w przyszłej wersji stabilnej. b/112110217
Poprawki błędów
- Sala nie będzie już przekazywała instancji
EmptySetResultException
do globalny moduł obsługi błędów, gdy strumień Rx zapytania został usunięty wcześniej zapytanie jest zakończone. b/130257475 - Usunęliśmy błąd, który powodował wyświetlanie nieprawidłowego komunikatu o błędzie w przypadku zawieszenia pokoju.
Funkcja DAO z adnotacją
@RawQuery
nie miała zwracanego typu. b/134303897 - Sala nie będzie już generować adapterów DAO w nieprzetworzonych typach. b/135747255
Wersja 2.1.0
Wersja 2.1.0
13 czerwca 2019 r.
Zwolniono pokój 2.1.0 bez zmian w pokoju 2.1.0-rc01
. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Ważne zmiany wprowadzone od wersji 2.0.0
- FTS: sala obsługuje teraz elementy z mapowaniem
Tabela FTS3 lub FTS4. Zajęcia z adnotacjami
Do
@Entity
można teraz dodać adnotację@Fts3
lub@Fts4
, by zadeklarować klasy z mapowaną tabelą wyszukiwania pełnotekstowego. Więcej opcji FTS dzięki metodom adnotacji - Widoki: sala obsługuje teraz deklarowanie klasy jako zapisanego zapytania, znanego też
jako widok, przy użyciu funkcji
@DatabaseView
adnotacja. - Sytuacje: metody DAO mogą teraz być zawieszanymi funkcjami. Uwzględnij:
room-ktx
w zależności od potrzeb, aby móc korzystać z tej funkcji. Artefakt ktx udostępnia też funkcję rozszerzeniaRoomDatabase.withTransaction
dla funkcji przy wykonywaniu transakcji na bazie danych w ramach współprogramu. - Wartość automatyczna: pokój obsługuje teraz deklarowanie
Wartość automatyczna
i klasy z adnotacjami. Adnotacje dotyczące pokoju
@PrimaryKey
, Funkcje@ColumnInfo
,@Embedded
i@Relation
mogą być teraz zadeklarowane automatycznie abstrakcyjne metody klasy z adnotacjami o wartości. Należy pamiętać, że takie adnotacje muszą również i@CopyAnnotations
, aby Pokój został zrozumiany. - Dodatkowa obsługa asynchroniczna: metody DAO z adnotacjami
@Insert
,@Delete
lub@Update
wraz z@Query
zawierającymINSERT
,DELETE
lubUPDATE
instrukcje, obsługują teraz zwroty Rx:Completable
,Single
,Maybe
, zwracany przez klienta Guava:ListenableFuture
. Można je również zawiesić funkcji. enableMultiInstanceInvalidation
to nowy interfejs API w:RoomDatabase.Builder
włącz unieważnianie wielu instancji RoomDatabase za pomocą tego samego .fallbackToDestructiveMigrationOnDowngrade
to nowy interfejs API wRoomDatabase.Builder
, aby automatycznie odtworzyć bazę danych w przypadku przejścia na niższą wersję. co się dzieje.ignoredColumns
to nowy interfejs API w adnotacji@Entity
, którego można używać do wyświetla listę ignorowanych pól według nazwy.- Sala będzie teraz prawidłowo używać głównego konstruktora Kotlina w klasach danych
uniknąć konieczności deklarowania właściwości jako
vars
.
Wersja 2.1.0-rc01
29 maja 2019 r.
Poprawki błędów
- Usunięto błąd inicjowania pokoju, który mógł wystąpić z powodu już skonfigurowanej konfiguracji temp_store. b/132602198
- Naprawiono ostrzeżenie o korzystaniu z cudzysłowu w przypadku użytkowników SQLite w wersji 3.27.0 lub nowszej. b/131712640
- Naprawiono błąd polegający na tym, że narzędzie Nieprawidłowa na przykład powodowało awarię, gdy kontrole unieważniania będą przeprowadzane równolegle. b/133457594
Wersja 2.1.0-beta01
7 maja 2019 r.
Udostępniono pakiet androidx.room 2.1.0-beta01
bez zmian od wersji 2.1.0-alfa. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Wersja 2.1.0-alpha07
25 kwietnia 2019 r.
Zmiany interfejsu API / działania
- Funkcja rozszerzenia
RoomDatabase.withTransaction
została zmieniona na nie przyjmuje już bloku funkcji z odbiornikiemCoroutineScope
. Zapobiega to pomijaniu dodatkowego opakowaniacoroutineScope { }
wymagane do równoczesnego uruchamiania elementów w bloku transakcji.
Poprawki błędów
- Naprawiono błąd polegający na tym, że pokój nie odpowiadał konwerterowi typów dla DAO Kotlin. , która zawiera parametr typu kolekcji. b/122066791
Wersja 2.1.0-alpha06
22 marca 2019 r.
Zmiany interfejsu API / działania
- Zapytania dotyczące transakcji asynchronicznych są teraz serializowane, dzięki czemu pokój nie będzie używać
więcej niż jeden wątek do wykonywania transakcji bazy danych.
Aplikacja
RoomDatabase.Builder.setTransactionExecutor(Executor)
została dodana, aby zezwolić skonfigurować wykonawcy, który będzie używany do transakcji. RoomDatabase.runInTransaction(Callable)
nie będzie już pakować się zaznaczone w specyfikacjach środowiska wykonawczego. b/128623748
Poprawki błędów
- Naprawiono błąd, przez który narzędzie do śledzenia unieważnień przestawało obserwować treść. tabeli, jeśli obserwatorzy zarówno tabeli treści, jak i zewnętrznego FTS treści dodano tabelę. b/128508917
- Gramatyka SQLite została zmieniona, aby odpowiadała wersji SQLite 3.24.0. b/110883668
Wersja 2.1.0-alpha05
13 marca 2019 r.
Nowe funkcje
- Funkcja rozszerzenia
RoomDatabase.withTransaction
umożliwia bezpieczne przeprowadzanie transakcji na bazie danych w ramach współrzędu. Funkcje rozszerzeń sal oraz obsługa współrzędnych są dostępne w artefakcieroom-ktx
. - Nieabstrakcyjne metody DAO z adnotacjami
@Transaction
można teraz zawieszać funkcje. b/120241587,
Zmiany interfejsu API / działania
- Nazwa artefaktu
room-coroutines
została zmieniona naroom-ktx
. Ma taką samą nazwę jak inne artefakty Androidax. - Funkcje
beginTransaction
,setTransactionSuccessful
iendTransaction
w domenieRoomDatabase
zostały wycofane i zastąpione przez funkcjęrunInTransaction
oraz funkcję rozszerzeniaroom-ktx
withTransaction
.
Poprawki błędów
- Naprawiono błąd polegający na tym, że argumenty tokenizera były pomijane, jeśli używany tokenizował satelity SIMPLE. b/125427014
- Naprawiono błąd polegający na tym, że usługa Room nie mogła poprawnie rozpoznawać funkcji zawieszania z parametrami, które były klasą wewnętrzną. b/123767877
- Naprawiliśmy błąd polegający na tym, że odroczona metoda DAO
@Query
z instrukcjamiINSERT
,UPDATE
lubDELETE
z zaangażowaniem przygotowywała zapytanie w wątku głównym. b/123695593 - Naprawiliśmy różne błędy, które powodowały, że Room generował nieprawidłowy kod dla niektórych funkcji zawieszania. b/123466702 i b/123457323
- Naprawiono błąd polegający na tym, że wycofane metody nie były prawidłowo pomijane w wygenerowanym kodzie. b/117602586
- Zaktualizowano zależność pokoju androidx.sqlite do wersji 1.0.2. Zawiera ona poprawki pozwalające na prawidłową obsługę uszkodzonych baz danych. b/124476912
Znane problemy
- Sala 2.1.0-alfa05 zależy od artefaktu
kotlinx-metadata-jvm
, który nie jest obecnie dostępny w Maven Central (KT-27991). Tę zależność można rozwiązać, dodającmaven { url "https://kotlin.bintray.com/kotlinx/" }
do repozytoriów projektów.
Wersja 2.1.0-alfa04
25 stycznia 2019 r.
Nowe funkcje
- Metody DAO z adnotacjami
@Query
zawierającymi instrukcjeINSERT
,UPDATE
lubDELETE
mogą teraz zwracać typy asynchroniczneSingle
,Mayble
,Completable
iListenableFuture
. Dodatkowo mogą to być również funkcje zawieszania. b/120227284
Zmiany interfejsu API / działania
- Sala zgłosi błąd, jeśli nieabstrakcyjna metoda DAO z adnotacją
@Transaction
zwróci typ asynchroniczny, taki jakSingle
,Mayble
,Completable
,LiveData
lubListenableFuture
. Transakcje są ograniczone do wątku, dlatego obecnie nie można rozpocząć ani zakończyć transakcji wokół funkcji, która może wykonywać zapytania w różnych wątkach. b/120109336 - Reguły
OnConflictStrategy.FAIL
iOnConflictStrategy.ROLLBACK
mają stan@Deprecated
, ponieważ nie działają zgodnie z oczekiwaniami z aktualnymi powiązaniami SQLite z Androidem. b/117266738
Poprawki błędów
- Naprawiono błąd, który powodował, że usługa Room nie używała poprawnie metody TypeConverter zwracanego typu, jeśli metoda DAO była funkcją zawieszania. b/122988159
- Naprawiono błąd, który powodował nieprawidłowe oznaczanie przez pokój dziedziczonych funkcji zawieszania jako niezawieszonych. b/122902595
- Naprawiliśmy błąd polegający na tym, że sala generowała nieprawidłowy kod, gdy pole
@Embedded
znajdowało się w klasie nadrzędnej i było używane w wielu klasach podrzędnych. b/121099048 - Rozwiązaliśmy problem polegający na tym, że podczas wywoływania funkcji zawieszania DAO między wywołaniami
beginTransaction()
iendTransaction()
baza danych blokowała się. b/120854786
Wersja 2.1.0-alfa03
4 grudnia 2018 r.
Zmiany interfejsu API
- Element FTS
tokenizer
w języku@Fts3
/@Fts4
przyjmuje teraz ciąg znaków, a nie enum. Dzięki temu Sala może korzystać z niestandardowych tokenizerów. Wbudowane tokenery są nadal zdefiniowane wFtsOptions
jako stałe ciągi znaków. b/119234881
Nowe funkcje
- Sytuacje: metody DAO mogą teraz być zawieszanymi funkcjami. Aby obsługiwać funkcje zawieszania w pokoju, opublikowaliśmy nowy artefakt
room-coroutines
. b/69474692 - Metody DAO z adnotacjami
@Insert
,@Delete
lub@Update
obsługują terazListenableFuture
jako zwracany typ. b/119418331
Poprawki błędów
- Naprawiono błąd polegający na tym, że usługa Room nieprawidłowo próbowała znaleźć konstruktor z kolumnami we właściwości
ignoredColumns
właściwości@Entity
. b/119830714 - Naprawiono błąd, który powodował, że usługa Room nie oznaczała parametrów metody DAO jako ostatecznej podczas generowania wygenerowanej implementacji. b/118015483
- Naprawiono błąd polegający na tym, że procesor pokoju ulegał awarii podczas zgłaszania błędu w zapytaniu ze specjalnymi symbolami. b/119520136
- Naprawiono błąd, który powodował odrzucanie innych implementacji
Collection
jako argumentów wyrażeniaIN
. b/119884035 - Naprawiliśmy błąd, który powodował, że dane LiveData zwracane z Pokoju były usuwane po zaobserwowaniu w nieskończoność, przez co usługa nie wysyłała już nowych danych. b/74477406
- Zaktualizowano blokadę zamknięcia urządzenia
RoomDatabase
, aby zmniejszyć rywalizację o blokadę. b/117900450
Wersja 2.1.0-alfa02
30 października 2018 r.
Nowe funkcje
- Dodano obsługę odwołań do
@DatabaseView
w@Relation
. b/117680932
Poprawki błędów
- Naprawiono błąd polegający na tym, że usługa Room wykonywała operację wejścia-wyjścia dysku w wątku głównym przy zasubskrybowaniu i usuwaniu za pomocą zwracanego typu Rx. b/117201279
- Naprawiono błąd, który powodował, że funkcja Room nie znalazła odpowiedniego konwertera typu dla pola w klasie encji Kotlin. b/111404868
- Naprawiono błąd, który powodował, że usługa Room generowała nieprawidłowy kod w przypadku implementacji interfejsu
DAO
zawierającej domyślną metodę Kotlin, która nie ma argumentów. b/117527454 - Zaktualizowano parser gramatyki SQLite w pokoju, naprawiono problem z wydajnością, który powodował długi czas kompilacji. b/117401230
Wersja 2.1.0-alpha01
8 października 2018 r.
Nowe funkcje
- FTS: sala obsługuje teraz elementy z mapowaną tabelą FTS3 lub FTS4. Do klas z adnotacjami
@Entity
można teraz dodatkowo dodać adnotacje za pomocą@Fts3
lub@Fts4
, aby zadeklarować klasę przy użyciu tabeli wyszukiwania pełnotekstowego mapowania. Opcje FTS umożliwiające dalsze dostosowanie są dostępne za pomocą metod adnotacji. b/62356416 - Widoki: sala obsługuje teraz deklarowanie klasy jako zapisanego zapytania, zwanego też widokiem z użyciem adnotacji @DatabaseView. b/67033276
- Wartość automatyczna: pokój obsługuje teraz deklarowanie klas z adnotacjami Wartość automatyczna jako elementów i zamówień POJO. Adnotacje do sal
@PrimaryKey
,@ColumnInfo
,@Embedded
i@Relation
można teraz zadeklarować w abstrakcyjnych metodach klasy z adnotacjami z wartościami automatycznymi. Aby pokój został prawidłowo zrozumiany, do tych adnotacji należy też dołączyć atrybut@CopyAnnotations
. b/62408420 - Dodatkowa obsługa typów zwrotów Rx: metody DAO oznaczone adnotacjami
@Insert
,@Delete
lub@Update
obsługują teraz zwroty RxCompletable
,Single<T>
iMaybe<T>
. b/63317956 - Typy stałe za pomocą funkcji
@Relation
: wcześniej sala wymagała możliwości skonfigurowania pól z adnotacjami@Relation
, ale teraz mogą one być parametrami konstruktora. enableMultiInstanceInvalidation
: to nowy interfejs API w wersjiRoomDatabase.Builder
, który umożliwia unieważnianie wielu instancji RoomDatabase przy użyciu tego samego pliku bazy danych. Mechanizm unieważniania na wiele instancji działa też w wielu procesach. B/62334005fallbackToDestructiveMigrationOnDowngrade
: to nowy interfejs API wRoomDatabase.Builder
, który automatycznie odtwarza bazę danych w przypadku przejścia na niższą wersję. b/110416954ignoredColumns
: to nowy interfejs API w adnotacji@Entity
, którego można używać do wyświetlania listy ignorowanych pól według nazwy. Przydatny do ignorowania dziedziczonych pól elementu. B/63522075
Zmiany interfejsu API / działania
mCallback
imDatabase
w pokojuRoomDatabase
to teraz@Deprecated
i zostaną usunięte w następnej głównej wersji pokoju. b/76109329
Poprawki błędów
- Rozwiązaliśmy 2 problemy, które powodowały, że pokoje nie były prawidłowo przywracane z uszkodzonej bazy danych lub nieprawidłowej migracji podczas inicjowania. b/111504749 i b/111519144
- Sala będzie teraz prawidłowo używać głównego konstruktora Kotlina w klasach danych, dzięki czemu nie będzie trzeba deklarować pól jako
vars
. b/105769985
Wersja 2.0.0
Wersja 2.0.0
1 października 2018 r.
Udostępniono pakiet androidx.room 2.0.0
bez zmian w wersji 2.0.0-rc01.
Wersja 2.0.0-rc01
20 września 2018 r.
Wersja androidx.room 2.0.0-rc01
została udostępniona bez zmian od wersji 2.0.0-beta01.
Wersja 2.0.0-beta01
2 lipca 2018 r.
Zmiany interfejsu API / działania
- Dodano
RoomDatabase.Builder.setQueryExecutor()
, aby umożliwić dostosowanie miejsca uruchamiania zapytań - Dodano obsługę RxJava2
Observable
- Wygenerowane implementacje DAO i bazy danych są już gotowe
Poprawki błędów
- Określ nazwę klasy/pola w polu „nie można znaleźć metody pobierania dla pola” błąd b/73334503
- Poprawiono zgodność wsteczną RoomOpenHelper ze starszymi wersjami pokoi b/110197391.
Zależności sprzed AndroidaX
W przypadku wersji pokoju sprzed Androida X uwzględniaj te zależności:
dependencies {
def room_version = "1.1.1"
implementation "android.arch.persistence.room:runtime:$room_version"
annotationProcessor "android.arch.persistence.room:compiler:$room_version" // For Kotlin use kapt instead of annotationProcessor
// optional - RxJava support for Room
implementation "android.arch.persistence.room:rxjava2:$room_version"
// optional - Guava support for Room, including Optional and ListenableFuture
implementation "android.arch.persistence.room:guava:$room_version"
// Test helpers
testImplementation "android.arch.persistence.room:testing:$room_version"
}
Wersja 1.1.1
Wersja 1.1.1
19 czerwca 2018 r.
Sala 1.1.1
jest taka sama jak sala 1.1.1-rc1
.
Wersja 1.1.1-rc1
16 maja 2018 r.
Bardzo zależy nam
zalecamy użycie pokoju 1.1.1-rc1
zamiast 1.1.0
, jeśli używasz migracji.
Usunęliśmy błąd, przez który pokój nie obsługiwał prawidłowo po migracji inicjowania b/79362399
Wersja 1.1.0
Wersja 1.1.0-beta3
19 kwietnia 2018 r.
Poprawki błędów
- Naprawiono błąd kompilacji, gdy POJO w Kotlin odwołuje się do encji relacji, która zostało zdefiniowane w Javie b/78199923.
Wersja 1.1.0-beta2
5 kwietnia 2018 r.
Poprawki błędów
Naprawiliśmy błąd krytyczny w implementacjach Rx
Single
iMaybe
pokoju, w wyniku których spowoduje to powtórzenie zapytania z wyprzedzeniem, co spowoduje problemy, jeśli dodasz więcej niż 1 obserwatora na zwróconych instancjachSingle
lubMaybe
. b/76031240[RoomDatabase.clearAllTables][ref-clearAllTables] nie
VACUUM
zapisze bazy danych, jeśli jest wywoływana w transakcji. b/77235565
Wersja 1.1.0-beta1
21 marca 2018 r.
Zmiany interfejsu API
- Z opinii wynika, że interfejs
@RawQuery
nie akceptuje już przekazywaniaString
jako parametru zapytania. Musisz użyć zapytania [SupportSQLiteQuery][ref-SupportSQLiteQuery]. (zobacz [SimpleSQLiteQuery][ref-SimpleSQLiteQuery], aby łatwo utworzyć instancję [SupportSQLiteQuery][ref-SupportSQLiteQuery] z obsługą argumentów). - Metoda [fallbackToDestructiveMigrationFrom][ref-fallbackToDestructiveMigrationFrom] RoomDatabase.Builder akceptuje teraz
vararg int
zamiastvararg Integer
.
Poprawki błędów
- [RoomDatabase.clearAllTables][ref-clearAllTables] próbuje teraz przywrócić miejsce z powrotem do systemu operacyjnego przez ustawienie punktu kontrolnego WAL i
VACUUM
uruchomienie bazy danych. - [
@RawQuery
][ref-RawQuery] akceptuje teraz dowolne pole Pojo dla właściwościobservedEntities
, o ile odwołuje się do co najmniej 1 encji za pomocą pólEmbedded
lubRelation
. b/74041772 - Stronicowanie: implementacja DataSource w pokoju prawidłowo obsługuje teraz zależności wielu tabel (takie jak relacje i złączenia). Wcześniej nie powodowały one generowania nowych wyników lub mogły się nie skompilować. b/74128314
Wersja 1.1.0-alfa1
22 stycznia 2018 r.
Nowe funkcje
RawQuery
: ten nowy interfejs API umożliwia metodom@Dao
otrzymywanie kodu SQL jako parametru zapytania b/62103290, b/71458963fallBackToDestructiveMigrationsFrom
: nowy interfejs API w wersjiRoomDatabase.Builder
umożliwia dokładniejsza kontrola nad tym, z której wersji schematu początkowego są migracje destrukcyjne dozwolone (w porównaniu z funkcją zastępcząToDestructiveMigration) b/64989640- Sala obsługuje teraz tylko nowsze interfejsy API stronicowania (alfa-4 lub nowsze), rezygnując z obsługi wycofanych
LivePagedListProvider
Aby korzystać z nowej wersji alfa pokoju, musisz użyć podziału na stronyalpha-4
lub nowszej i przełącz się zLivePagedListProvider
naLivePagedListBuilder
, jeśli jeszcze nie zostało to zrobione.
Poprawki błędów
- Ulepszona obsługa typów Kotlin Kapt. b/69164099
- Kolejność pól nie unieważnia już schematu. b/64290754