15 января 2019 г.
Менеджер работ
Выпущен WorkManager 1.0.0-beta02
. Этот выпуск содержит некоторые исправления ошибок.
Исправления ошибок
- Исправлен крайний случай, когда периодическая работа могла выполняться более одного раза за интервал на устройствах под управлением Android 6.0 (уровень API 23). б/121998363
- Исправлено исключение
ConcurrentModificationException
на устройствах под управлением Android 5.1 (уровень API 22) или ниже. б/121345393 - Исправлено ошибочное выполнение работы при несоблюдении ограничений на устройствах под управлением Android 5.1 (уровень API 22) или ниже. б/122578012
- Оптимизирована обработка завершения работы для более быстрого выполнения в некоторых крайних случаях. б/122358129
- Добавлено изменение для устранения потенциальных условий гонки между несколькими экземплярами
LiveData
, которые использует WorkManager. - Перенесено использование зависимости
Room
1.1.1
вместо1.1.1-rc01
; эти версии идентичны. б/122578011
19 декабря 2018 г.
Менеджер работ
Выпущен WorkManager 1.0.0-beta01
. Этот выпуск не содержит изменений API; Ожидается, что в дальнейшем WorkManager останется стабильным API до следующей версии, если не возникнет критическая проблема. Этот выпуск содержит некоторые исправления ошибок.
Исправления ошибок
- Ранее отмененные дочерние элементы успешно завершенной родительской работы больше не будут выполняться. б/120811767
- Правильно инициализированные классы журналирования (в первую очередь обнаруживаемые во время тестов).
18 декабря 2018 г.
Навигация
Вышла навигация 1.0.0-alpha09
. Этот выпуск содержит критические изменения API; см. раздел «Краечные изменения» ниже.
Мы решили не продолжать разработку артефакта android.arch.navigation:navigation-testing
. Хотя это оказалось полезным для внутреннего тестирования NavController
, мы настоятельно рекомендуем альтернативные стратегии тестирования, такие как имитация экземпляра NavController
, чтобы убедиться, что выполняются правильные вызовы navigate()
. Этот подход подробно обсуждается в докладе Single Activity на AndroidDevSummit 2018, и мы будем работать над дополнительной документацией, посвященной тестированию с помощью навигации.
Новые возможности
-
MenuItem
сmenuCategory="secondary"
больше не будет выталкивать задний стек при использовании с методамиNavigationUI
. б/120104424 -
AppBarConfiguration
теперь позволяет вам установить резервный экземплярOnNavigateUpListener
, который будет вызываться, когдаnavController.navigateUp()
возвращаетfalse
. б/79993862 б/120690961
Критические изменения
- При использовании
<argument>
сargType="reference"
Навигация больше не анализирует ссылку, а вместо этого предоставляет сам необработанный идентификатор ресурса. б/111736515 -
onNavDestinationSelected()
теперь по умолчанию возвращается к начальному пункту вашего навигационного графика, что делает их совместимыми с методамиsetup
. ДобавьтеmenuCategory="secondary"
в свойMenuItem
, чтобы не выскакивать задний стек. аосп/852869 - Методы
fromBundle()
сгенерированных классовArgs
теперь принимают ненулевойBundle
вместо нулевогоBundle
aosp/845616.
Исправления ошибок
- Аргументы теперь правильно анализируются из глубоких ссылок как правильный
argType
, а не всегда как строки b/110273284. - Навигация теперь корректно экспортирует общедоступные ресурсы b/121059552.
- Safe Args теперь совместим с плагином Android Gradle 3.4 Canary 4 и выше b/119662045
12 декабря 2018 г.
Менеджер работ
Выпущен WorkManager 1.0.0-alpha13
. Этот выпуск содержит незначительное изменение API, которое будет полезно некоторым пользователям Kotlin.
Изменения API
-
androidx.work.Result
перемещен во внутренний классListenableWorker
. Это предотвращает конфликты рефакторинга с классомResult
верхнего уровня Kotlin. Это критическое изменение API. б/120564418
Критические изменения API
-
androidx.work.Result
перемещен во внутренний классListenableWorker
.
6 декабря 2018 г.
Пейджинг
Пейджинг 2.1.0-rc01
выпущен без изменений по сравнению с 2.1.0-beta01
.
Навигация
Вышла навигация 1.0.0-alpha08
. Этот выпуск содержит критические изменения API; см. раздел «Краечные изменения» ниже.
Новые возможности
- Метки назначения при использовании с методами
NavigationUI
теперь автоматически заменяют экземпляры{argName}
в вашемandroid:label
правильным аргументом b/80267266. - Навигация теперь зависит от библиотеки поддержки 28.0.0 b/120293333.
Критические изменения
-
OnNavigatedListener
переименован вOnDestinationChangedListener
b/118670572. -
OnDestinationChangedListener
теперь также передаетBundle
аргументов aosp/837142. - Атрибуты
app:clearTask
иapp:launchDocument
и связанные с ними методы были удалены. Используйтеapp:popUpTo
с корнем вашего графика, чтобы удалить все пункты назначения из заднего стека. б/119628354 -
ActivityNavigator.Extras
теперь использует шаблонBuilder
и добавляет возможность устанавливать любые флагиIntent.FLAG_ACTIVITY_
aosp/828140 -
NavController.onHandleDeepLink
переименован вhandleDeepLink
aosp/836063. - Многие классы и методы, не предназначенные для создания подклассов, такие как
NavOptions
,NavInflater
,NavDeepLinkBuilder
иAppBarConfiguration
, сталиfinal
aosp/835681. - Устаревший метод
NavHostFragment.setGraph()
был удален aosp/835684. - Устаревший метод
NavigationUI.navigateUp(DrawerLayout, NavController)
был удален. аосп/835684 - Создание фрагмента было перенесено в
FragmentNavigator
, что упрощает делегирование создания фрагментаFragmentFactory
. б/119054429 - Конструктор
NavGraphNavigator
больше не используетContext
aosp/835340. - NavigatorProvider теперь является классом, а не интерфейсом.
NavigatorProvider
, возвращаемый методомgetNavigatorProvider()
не изменил свою функциональность. аосп/830660 -
NavDestination.navigate()
был удален. Вместо этого вызовитеnavigate()
вNavigator
. аосп/830663 - Значительный рефакторинг
Navigator
, устраняющий необходимость вOnNavigatorNavigatedListener
и вместо этогоnavigate
NavDestination
, к которому был осуществлен переход. - Экземпляры
Navigator
больше не могут отправлять всплывающие события вNavController
. Рассмотрите возможность использованияOnBackPressedCallback
для перехвата нажатия кнопки «Назад» и вызоваnavController.popBackStack()
. аосп/833716
Исправления ошибок
-
popUpTo
теперь работает стабильно, если пунктом назначения является элемент<navigation>
b/116831650. - Исправлен ряд ошибок, приводивших к возникновению
IllegalArgumentException
при использовании вложенных графиков b/118713731 b/113611083 b/113346925 b/113305559 - Атрибут
dataPattern
для пунктов назначения<activity>
теперь будет заполнять аргументы из аргументов, отличных от String, путем вызоваtoString()
b/120161365.
Безопасные аргументы
- Safe Args поддерживает сериализуемые объекты, включая значения Enum. Типы перечислений могут устанавливать значение по умолчанию, используя литерал перечисления без имени класса (например,
app:defaultValue="READ"
) b/111316353 - Safe Args поддерживает массивы всех поддерживаемых типов b/111487504.
- Safe Args теперь игнорирует подпапки каталогов ресурсов b/117893516.
- Safe Args добавляет аннотации
@Override
где это необходимо b/117145301
5 декабря 2018 г.
Менеджер работ
Выпущен WorkManager 1.0.0-alpha12
. Этот выпуск содержит некоторые критические изменения API; см. раздел «Краечные изменения API» ниже. Эта версия, вероятно, будет выпущена как наша первая бета-версия. alpha12
также содержит обширные обновления документации.
Изменения API
- Новый артефакт
work-rxjava2
представляетRxWorker
. ЭтоListenableWorker
, который ожидаетSingle<Payload>
. - Поддержка Firebase JobDispatcher удалена из-за его предстоящего устаревания. Это означает, что артефакт
work-firebase
больше не будет обновляться по мере перехода к бета-тестированию. В будущем мы будем рассматривать возможность добавления альтернативы. - Объединение
Payload
вResult
.Result
теперь представляет собой «запечатанный класс» с тремя конкретными реализациями, которые вы можете получить с помощьюResult.success()
(илиResult.success(Data)
),Result.failure()
(илиResult.failure(Data)
) иResult.retry()
. ВашиListenableFuture
теперь выдаютResult
вместоPayload
.Worker
не имеет методов получения и установки для выходныхData
. Это кардинальное изменение. - Добавлены
Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit)
иConstraints.Builder.setTriggerContentUpdateDelay(long, TimeUnit)
и варианты для лучшей поддержки URI контента с медленным запуском. б/119919774 - Добавлен вариант
WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, Duration)
. Для этого метода требуется API 26. - Добавлены методы расширения Kotlin
Operation.await()
иListenableFuture.await()
. - Переименован
Operation.getException()
вOperation.getThrowable()
. Это кардинальное изменение. - Класс
ContentUriTriggers
и ссылающиеся на него методы больше не доступны для публичного использования. Это кардинальное изменение. - Удалены остальные методы с переменным числом аргументов в
WorkManager
,WorkContinuation
иOneTimeWorkRequest
, чтобы оптимизировать API. Чтобы исправить любые проблемы со сборкой, вы можете обернуть существующие varargs с помощьюArrays.asList(...)
. Мы по-прежнему включаем версии каждого метода с одним аргументом. Это кардинальное изменение. - Удалены варианты
WorkContinuation.combine(OneTimeWorkRequest, *)
. Они представляли запутанный API; существующие методыcombine
более понятны. Это кардинальное изменение.
Исправления ошибок
- Реализации до Marshmallow теперь более надежны при восстановлении после смерти процесса уже выполняемой задачи.
-
LiveData
, наблюдаемая черезobserveForever
отслеживается через WorkManager. Это резервная копия исправления библиотеки комнат. б/74477406 -
Data.Builder.build()
теперь генерирует исключение, если сериализованный объект превышает свой максимальный размер. Раньше это происходило только в фоновом потоке, где вы не могли его правильно обработать. - Дальнейшее различие остановленных и отмененных работ;
getWorkInfoById()
вернетWorkInfo
сState
CANCELLED
во времяListenableWorker.onStopped()
. - Считайте
null
Result
как сбои вListenableWorker
. б/120362353 - Спекулятивное исправление для планшетов Shield с API 24, которые иногда вызывали исключение
IllegalArgumentException
. б/119484416
Критические изменения API
- Поддержка Firebase JobDispatcher удалена из-за его предстоящего устаревания. Это означает, что артефакт
work-firebase
больше не будет обновляться по мере перехода к бета-тестированию. В будущем мы будем рассматривать возможность добавления альтернативы. - Объединение
Payload
вResult
.Result
теперь представляет собой «запечатанный класс» с тремя конкретными реализациями, которые вы можете получить с помощьюResult.success()
(илиResult.success(Data)
),Result.failure()
(илиResult.failure(Data)
) иResult.retry()
. ВашиListenableFuture
теперь выдают результатResult
вместоPayload
.Worker
не имеет методов получения и установки для выходныхData
. - Добавлены методы расширения Kotlin
Operation.await()
иListenableFuture.await()
. - Переименован
Operation.getException()
вOperation.getThrowable()
. - Класс
ContentUriTriggers
и ссылающиеся на него методы больше не доступны для публичного использования. - Удалены остальные методы с переменным числом аргументов в
WorkManager
,WorkContinuation
иOneTimeWorkRequest
для оптимизации API. Чтобы исправить любые проблемы сборки, вы можете обернуть существующие varargs с помощьюArrays.asList(...)
. Мы по-прежнему включаем версии каждого метода с одним аргументом. - Удалены варианты
WorkContinuation.combine(OneTimeWorkRequest, *)
. Они представляли запутанный API; существующие методыcombine
более понятны.
4 декабря 2018 г.
Комната
Выпущена версия Room 2.1.0-alpha03
с поддержкой сопрограмм и исправлением нескольких ошибок.
Изменения API
-
tokenizer
FTS в@Fts3
/@Fts4
теперь принимает строку вместо Enum. Это позволяет Room использовать собственные токенизаторы. Встроенные токенизаторы по-прежнему определяются вFtsOptions
как строковые константы. б/119234881
Новые возможности
- Курутины : методы DAO теперь могут быть приостанавливаемыми функциями. Для поддержки функций приостановки в Room был выпущен новый артефакт —
room-coroutines
. б/69474692 - Методы DAO, аннотированные
@Insert
,@Delete
или@Update
теперь поддерживаютListenableFuture
в качестве возвращаемого типа. б/119418331
Исправления ошибок
- Исправлена ошибка, из-за которой Room неправильно пыталась найти конструктор со столбцами в свойстве
ignoredColumns
@Entity
. б/119830714 - Исправлена ошибка, из-за которой Room не помечала параметры метода DAO как окончательные в их сгенерированной реализации. б/118015483
- Исправлена ошибка, из-за которой процессор Room аварийно завершал работу при сообщении об ошибке в запросе со специальными символами. б/119520136
- Исправлена ошибка, из-за которой Room отклоняла другие различные реализации
Collection
в качестве аргументов выраженияIN
. б/119884035 - Исправлена ошибка, из-за которой LiveData, возвращаемая из комнаты, собирала мусор при постоянном наблюдении, из-за чего она больше не выдавала новые данные. б/74477406
- Обновлена блокировка закрытия
RoomDatabase
, чтобы уменьшить конфликты блокировок. б/117900450
8 ноября 2018 г.
Менеджер работ
Выпущен WorkManager 1.0.0-alpha11
. Этот выпуск содержит множество изменений, которые станут стабильным API в beta
. В этом выпуске есть критические изменения API; см. раздел «Краечные изменения API» ниже.
Изменения API
-
work-runtime-ktx
представляет новыйCoroutineWorker
. -
WorkStatus
был переименован вWorkInfo
. Все соответствующие варианты методаgetStatus
были переименованы в соответствующие вариантыgetWorkInfo
. Это кардинальное изменение. -
ListenableWorker.onStopped()
больше не принимает логический аргумент, указывающий, был лиWorkRequest
отменен.WorkManager
больше не делает этого различия. Это кардинальное изменение. - Пакет
androidx.work.test
переименован в пакетandroidx.work.testing
. Это кардинальное изменение. - Сеттеры
Constraints
больше не являются частью общедоступного API. Это кардинальное изменение. -
WorkerParameters.getTriggeredContentUris()
иWorkerParameters.getTriggeredContentAuthorities()
ранее возвращали массивы. Теперь эти методы возвращают коллекции. Это кардинальное изменение. -
ListenableWorker.onStartWork()
переименован вListenableWorker.startWork()
. Это кардинальное изменение. - Конструктор
WorkStatus
больше не является частью общедоступного API. Это кардинальное изменение. -
Configuration.getMaxJobSchedulerID()
иConfiguration.getMinJobSchedulerID()
переименованы вConfiguration.getMinJobSchedulerId()
иConfiguration.getMaxJobSchedulerId()
соответственно. Это кардинальное изменение. - В общедоступный API добавлено множество аннотаций
@NonNull
для улучшения эргономики API. - Добавьте API
WorkManager.enqueueUniqueWork()
для постановки в очередь уникальныхOneTimeWorkRequest
без необходимости созданияWorkContinuation
. - Все варианты методов
enqueue
иcancel
вWorkManager
теперь возвращают новый типOperation
. Это кардинальное изменение. - Все варианты
enqueue
в очередь больше не принимают переменные аргументы дляWorkRequest
. Это кардинальное изменение. Вместо этого используйте Коллекции. Вы можете использоватьArrays.asList()
для изменения существующего кода. Мы сделали это, чтобы уменьшить поверхность API и количество методов. - Попытка
initialize
WorkManager
более одного раза для каждого процесса теперь приведет к возникновениюIllegalStateException
. Это кардинальное изменение.
Исправления ошибок
-
WorkRequest.Builder
в артефактеwork-runtime-ktx
теперь используютListenableWorker
s. Исправления b/117666259 - Убедитесь, что следующий запуск
PeriodicWork
произойдет в будущем. Исправления б/118204399 - Удалите потенциальный дисковый ввод-вывод при использовании WorkManager при запуске приложения. Исправления b/117796731
- Исправьте состояние гонки в
WorkConstraintsTracker
. Исправления android-workmanager/issues/56
Критические изменения API
-
WorkStatus
был переименован вWorkInfo
. Все соответствующие варианты методаgetStatus
были переименованы в соответствующие вариантыgetWorkInfo
. -
ListenableWorker.onStopped()
больше не принимает логический аргумент, указывающий, был лиWorkRequest
отменен.WorkManager
больше не делает этого различия. - Пакет
androidx.work.test
переименован в пакетandroidx.work.testing
. - Сеттеры
Constraints
больше не являются частью общедоступного API. -
WorkerParameters.getTriggeredContentUris()
иWorkerParameters.getTriggeredContentAuthorities()
ранее возвращали массивы. Теперь эти методы возвращают коллекции. -
ListenableWorker.onStartWork()
переименован вListenableWorker.startWork()
. - Конструктор
WorkStatus
больше не является частью общедоступного API. -
Configuration.getMaxJobSchedulerID()
иConfiguration.getMinJobSchedulerID()
переименованы вConfiguration.getMinJobSchedulerId()
иConfiguration.getMaxJobSchedulerId()
соответственно. - Все варианты методов
enqueue
иcancel
вWorkManager
теперь возвращают новый типOperation
. - Все варианты
enqueue
в очередь больше не принимают переменные аргументы дляWorkRequest
. - Попытка
initialize
WorkManager
более одного раза для каждого процесса теперь приведет к возникновениюIllegalStateException
.
1 ноября 2018 г.
Пейджинг
Пейджинг 2.1.0-beta01
выпущен без изменений по сравнению с 2.1.0-alpha01
.
30 октября 2018 г.
Комната
Выпущена версия Room 2.1.0-alpha02
с несколькими исправлениями ошибок и новой функцией.
Новые возможности
- Добавлена поддержка ссылки на
@DatabaseView
в@Relation
. б/117680932
Исправления ошибок
- Исправлена ошибка, из-за которой Room выполнял дисковый ввод-вывод в основном потоке при подписке и удалении из возвращаемого типа Rx. б/117201279
- Исправлена ошибка, из-за которой Room не мог найти подходящий преобразователь типов для поля в классе сущностей Kotlin. б/111404868
- Исправлена ошибка, из-за которой Room генерировал неправильный код для реализации интерфейса
DAO
, содержащий метод Kotlin по умолчанию, не имеющий аргументов. б/117527454 - Обновлен анализатор грамматики SQLite в Room, исправлена проблема с производительностью, приводившая к длительному времени сборки. б/117401230
29 октября 2018 г.
Навигация
Выпущена версия Navigation 1.0.0-alpha07
с исправлениями ошибок и изменениями API.
Новые возможности
- Новый класс AppBarConfiguration позволяет вам указать, какие места назначения считаются местами назначения верхнего уровня . Подробности смотрите в обновленной документации . б/117333663
- Теперь вы можете передавать аргументы в начальный пункт вашего графика b/110300470.
- Глубокие ссылки теперь поддерживают пользовательские схемы с точками, дефисами и знаками плюса. б/112806402
Критические изменения
- Модуль
navigation-testing-ktx
включен вnavigation-testing artifact
и больше не будет публиковаться. - Артефакт
navigation-testing
теперь зависит от стандартной библиотеки Kotlin. API был изменен, чтобы лучше соответствовать соглашениям Kotlin, но вы можете продолжать использовать его для тестов, написанных на Java. - Зарегистрированные навигационные графы манифеста метаданных больше не поддерживаются. б/118355937
- Действия больше нельзя прикреплять к местам назначения <активность>. аосп/785539
Исправления ошибок
- Глубокие ссылки теперь правильно анализируют параметры запроса. б/110057514
- В пунктах назначения действий теперь правильно применяются все анимации входа и выхода. б/117145284
- Исправлен сбой, возникающий после изменения конфигурации при использовании пользовательских навигаторов. б/110763345
Безопасные аргументы
- Безопасные аргументы теперь имеют фиксированную зависимость от плагина Android Gradle 3.2.1. б/113167627
- Теперь направления можно генерировать для внутренних классов. б/117407555
- Исправлена проблема с созданием маршрутов к графику <include>. б/116542123
12 октября 2018 г.
Пейджинг
Пейджинг 2.1.0-alpha01
выпущен с двумя основными дополнениями — удалением страниц и библиотеками расширений KTX для каждого артефакта, а также с несколькими другими изменениями API и исправлениями.
Изменения API
- Добавлен
PagedList.Config.Builder.setMaxSize()
для ограничения количества загружаемых элементов в памяти. - Добавлен
androidx.paging.Config()
в качестве альтернативы Kotlin дляPagedList.Config.Builder
- Добавлен
androidx.paging.PagedList()
в качестве альтернативы Kotlin дляPagedList.Builder
- Добавлен
DataSourceFactory.toLiveData()
в качестве альтернативы Kotlin дляLivePagedListBuilder
- Добавлены
DataSourceFactory.toObservable()
иtoFlowable()
в качестве альтернатив Kotlin дляRxPagedListBuilder
- Добавлен
AsyncPagedListDiffer.addPagedListListener()
для прослушивания при замене PagedList. б/111698609 - Добавлен вариант
PagedListAdapter.onCurrentListChanged()
, который передает старый и новый список, предыдущий вариант устарел. - Добавлены варианты
PagedListAdapter/AsyncPagedListDiffer.submitList()
, которые принимают дополнительный обратный вызов, который срабатывает, если/когда отображается список страниц после сравнения. Это позволяет синхронизировать обмен PagedList с другими обновлениями пользовательского интерфейса. б/73781068 - Добавлен
PagedList.getLoadedCount()
, чтобы вы знали, сколько элементов находится в памяти. Обратите внимание, что возвращаемое значение всегда равно.size()
, если заполнители отключены.
Исправления ошибок
- Исправлено состояние гонки при различении повторного использования списков b/111591017.
-
PagedList.loadAround()
теперь генерирует исключениеIndexOutOfBoundsException
, когда индекс недействителен. Раньше это могло привести к сбою из-за неясного другого исключения. - Исправлен случай, когда чрезвычайно маленький размер начальной загрузки вместе с неизмененными данными приводил к невозможности дальнейшей загрузки b/113122599.
11 октября 2018 г.
Менеджер работ
WorkManager 1.0.0-alpha10
выпущен с поддержкой асинхронной работы, контролируемой разработчиком. В этом выпуске есть критические изменения API; см. раздел «Краечные изменения API» ниже.
Мы ожидаем, что WorkManager вступает в заключительную фазу своего альфа-периода. Мы ожидаем, что в бета-версии API будет стабильным, поэтому, пожалуйста, найдите время, чтобы оставить свой отзыв в нашем трекере проблем.
Изменения API
- Удалены все ранее
deprecated
методы и классы, в частности конструкторWorker
по умолчанию. Это критическое изменение API. -
NonBlockingWorker
переименован вListenableWorker
, который теперь является скрытым общедоступным классом и готов к использованию.-
ListenableWorker
предоставляет доступ к одному абстрактному методуListenableFuture<Payload> onStartWork()
, который вызывается в основном потоке. Вы можете начать и обрабатывать работу асинхронно. По завершении вам следует соответствующим образом обновитьListenableFuture
. Эталонные реализацииListenableFuture
представлены в пакетеFutures
вalpha02
(см. ниже разделWorkManager
). -
Worker
расширяетListenableWorker
и по-прежнему работает, как и раньше, с абстрактным методомResult doWork()
. - Некоторые методы и члены перенесены с
Worker
наListenableWorker
. - Вскоре мы предоставим эталонные реализации для
ListenableWorker
, использующих сопрограммы Kotlin (как только будут выпущены стабильные версии) и RxJava2.
-
- Интерфейс
WorkerFactory
и конкретная реализацияDefaultWorkerFactory
были объединены в абстрактный класс под названиемWorkerFactory
. Реализация гарантирует, что поведение, основанное на отражении по умолчанию, будет вызываться в качестве последней меры для любых созданных пользователем экземпляровWorkerFactory
. Это кардинальное изменение. - Удалены
WorkManager.synchronous()
иWorkContinuation.synchronous()
и все связанные методы. ДобавленListenableFuture<Void>
в качестве типа возвращаемого значения многих методов API. Это критическое изменение API.- Теперь вы можете синхронно получать и наблюдать с помощью
ListenableFuture
s. Например,WorkManager.enqueue()
раньше возвращалvoid
; теперь он возвращаетListenableFuture<Void>
. Вы можете вызватьListenableFuture.addListener(Runnable, Executor)
илиListenableFuture.get()
для запуска кода после завершения операции. - Обратите внимание, что эти
ListenableFuture
не сообщают вам, была ли операция успешной или неудачной; только то, что они закончили. Вам все равно потребуется связать методы WorkManager, чтобы получить эту информацию. - Мы игнорируем вызовы
cancel()
для этих объектов, так как они сбивают с толку и их трудно понять (отменяете ли вы операцию или результирующую работу?). Это входит в контрактFuture
. - Чтобы поддерживать четность с синхронными методами
getStatus*
, мы предоставили вариантыListenableFuture
и переименовали существующие, которые возвращалиLiveData
, чтобы в имени явно было «LiveData» (например,getStatusesByIdLiveData(UUID)
). Это критическое изменение API.
- Теперь вы можете синхронно получать и наблюдать с помощью
Исправления ошибок
- Исправлена известная проблема из Alpha09, связанная с дублированием файлов
androidx-annotations.pro
. Вы можете удалить обходной путь из предыдущих примечаний к выпуску, удаливexclude 'META-INF/proguard/androidx-annotations.pro'
из вашего файла Gradle. - Добавлены конфигурации proguard для сохранения нового конструктора
Worker
. б/116296569 - Исправьте потенциальное
NullPointerException
в состоянии гонки, когда работа былаREPLACE
d. б/116253486 и б/116677275 -
WorkContinuation.combine()
теперь принимает один или несколькоWorkContinuation
вместо двух и более. б/117266752
Критические изменения API
- Удалены все ранее
deprecated
методы и классы, в частности конструкторWorker
по умолчанию. - Интерфейс
WorkerFactory
и конкретная реализацияDefaultWorkerFactory
были объединены в абстрактный класс под названиемWorkerFactory
. - Удалены
WorkManager.synchronous()
иWorkContinuation.synchronous()
. - Методы
WorkManager.getStatus*()
теперь возвращаютListenableFuture
s.WorkManager.getStatus*LiveData()
возвращаетLiveData
s.
Фьючерсы
Выпущена версия Futures 1.0.0-alpha02
.
Изменения API
- Разработчики теперь могут использовать
ResolvableFuture
иAbstractResolvableFuture
как облегченные конкретные реализацииListenableFuture
.
8 октября 2018 г.
Комната
Выпущена комната 2.1.0-alpha01
.
Новые возможности
- FTS : комната теперь поддерживает объекты с таблицей сопоставления FTS3 или FTS4 . Классы, аннотированные
@Entity
теперь можно дополнительно аннотировать@Fts3
или@Fts4
чтобы объявить класс с сопоставлением таблицы полнотекстового поиска. Опции FTS для дальнейшей настройки доступны через методы аннотации. б/62356416 - Представления : Room теперь поддерживает объявление класса как хранимого запроса, также известного как представление , с использованием аннотации @DatabaseView. б/67033276
- Auto Value : Room теперь поддерживает объявление аннотированных классов AutoValue как сущностей и POJO. Аннотации Room
@PrimaryKey
,@ColumnInfo
,@Embedded
и@Relation
теперь могут быть объявлены в абстрактных методах класса с аннотациями автоматического значения. Обратите внимание, что эти аннотации также должны сопровождаться@CopyAnnotations
, чтобы Room правильно их понимала. б/62408420 - Поддержка дополнительных типов возврата Rx : методы DAO, аннотированные
@Insert
,@Delete
или@Update
теперь поддерживают типы возврата RxCompletable
,Single<T>
иMaybe<T>
. б/63317956 - Неизменяемые типы с
@Relation
: ранее Room требовал, чтобы поля с аннотациями@Relation
были устанавливаемыми, но теперь они могут быть параметрами конструктора. -
enableMultiInstanceInvalidation
: новый API вRoomDatabase.Builder
, позволяющий сделать недействительными несколько экземпляров RoomDatabase с использованием одного и того же файла базы данных. Этот механизм аннулирования нескольких экземпляров также работает в нескольких процессах. б/62334005 -
fallbackToDestructiveMigrationOnDowngrade
: новый API вRoomDatabase.Builder
для автоматического повторного создания базы данных в случае перехода на более раннюю версию. б/110416954 -
ignoredColumns
: новый API в аннотации@Entity
, который можно использовать для перечисления игнорируемых полей по имени. Полезно для игнорирования унаследованных полей сущности. б/63522075
API/изменения поведения
-
mCallback
иmDatabase
вRoomDatabase
теперь@Deprecated
и будут удалены в следующей основной версии Room. б/76109329
Исправления ошибок
- Исправлены две проблемы, из-за которых Room не мог должным образом восстановиться после поврежденной базы данных или неправильной миграции во время инициализации. б/111504749 и б/111519144
- Room теперь будет правильно использовать основной конструктор Kotlin в классах данных, избегая необходимости объявлять поля как
vars
. б/105769985
1 октября 2018 г.
Комната 2.0.0
выпущена без изменений по сравнению с 2.0.0-rc01
. Paging 2.0.0
выпущен с одним исправлением.
Пейджинг
Исправления ошибок
- Исправлен сбой, который мог произойти при очень быстрой прокрутке с использованием
PositionalDataSource
и заполнителей b/114635383 .
21 сентября 2018 г.
Lifecycle 2.0.0
выпущен с одним исправлением ошибки из 2.0.0-rc01
во ViewModel.
Жизненный цикл
Исправления ошибок
- Исправлено правило Proguard ViewModel, которое неправильно удаляло конструкторы b/112230489.
20 сентября 2018 г.
Навигация
Выпущена версия Navigation 1.0.0-alpha06
с исправлениями ошибок и изменениями API.
Новые возможности
- Переходы общих элементов для целевых фрагментов и действий теперь поддерживаются b/79665225 . Дополнительные сведения см. в разделе Реализация навигации с помощью компонента архитектуры навигации.
- Выбор элемента в
NavigationView
теперь приведет к закрытию любого содержащего его нижнего листа b/112158843.
Изменения API
- Критическое изменение: метод Navigator
navigate()
теперь принимает параметрNavigator.Extras
. - Метод
getGraph()
NavController теперь имеет значениеNonNull
b/112243286.
Исправления ошибок
-
NavigationUI.setupWithNavController()
больше не пропускает представления, если используется с представлениями из отдельных пунктов назначения b/111961977 - Navigator
onSaveState()
теперь вызывается только один раз b/112627079
Безопасные аргументы
- Классы направлений навигации теперь расширяют родительский класс Directions, если он существует b/79871405.
- Классы Directions и Args теперь имеют полезную реализацию
toString()
b/111843389.
19 сентября 2018 г.
Менеджер работ
WorkManager 1.0.0-alpha09
выпущен с исправлениями ошибок, обновлениями инфраструктуры и изменениями API.
Известная проблема
Если вы столкнулись со следующей проблемой: «Найдено более одного файла с независимым от ОС путем META-INF/proguard/androidx-annotations.pro», добавьте следующее в свой файл gradle в качестве временного решения, пока мы исправим проблему. проблема в альфа10:
классный
android { packagingOptions { exclude 'META-INF/proguard/androidx-annotations.pro' } }
Котлин
android { packagingOptions { exclude("META-INF/proguard/androidx-annotations.pro") } }
Исправления ошибок
- Добавлено еще одно исправление, необходимое для ошибки «100 заданий». б/115560696
- Добавлены некоторые исправления ошибок ограничения внешнего ключа из-за условий гонки. б/114705286
- Делегированные вызовы
ConstraintTrackingWorker.onStopped(boolean)
базовогоWorker
. б/114125093 - Обеспечьте правильную минимальную задержку отсрочки для Firebase JobDispatcher. б/113304626
- Улучшенные гарантии многопоточности, встроенные в библиотеку.
- Устраните потенциальную проблему с внутренней дедупликацией
LiveData
.
Изменения API
- Теперь вы можете создавать свои собственные экземпляры
Worker
во время выполнения, указавWorkerFactory
как частьWorkManager.Configuration
. Резервной фабрикой являетсяDefaultWorkerFactory
, которая соответствует поведению предыдущих версий WorkManager.- Конструкторы по умолчанию для
Worker
иNonBlockingWorker
теперь помечены как устаревшие. Используйте новый конструктор (Worker(Context, WorkerParameters)
) и вызовитеsuper(Context, WorkerParameters)
; в будущих версиях WorkManager конструктор по умолчанию будет удален.
- Конструкторы по умолчанию для
- Мы начали использовать новый артефакт
ListenableFuture
для внутренних целей (без зависимостей Guava). Мы представим ListenableFutures в API в следующих выпусках. Это изменение будет поддерживать возможное отображениеNonBlockingWorker
. - Добавьте возможность запускать работу по времени в
TestDriver
черезTestDriver.setInitialDelayMet(UUID)
иTestDriver.setPeriodDelayMet(UUID)
. б/113360060
Критические изменения
- Конструкторы
Worker
иNonBlockingWorker
по умолчанию устарели. Пожалуйста, перейдите на новый конструктор как можно скорее. В будущих версиях конструктор по умолчанию будет удален.
27 августа 2018 г.
Менеджер работ
WorkManager 1.0.0-alpha08
выпущен с исправлениями ошибок.
Исправления ошибок
- Компоненты WorkManager явно помечены как предназначенные для прямой загрузки без ведома, поэтому они не запускаются во время прямой загрузки. В будущем мы предоставим версию WorkManager, поддерживающую прямую загрузку. б/112665532
- Исправлена проблема, из-за которой повторная попытка не выполнялась. б/112604021
- Исправлена периодическая работа, которая не выполнялась повторно (связанная с вышеупомянутой проблемой). б/112859683
- Соблюдаются политики отсрочки, когда процесс приложения уже запущен.
- Исправлены сообщения об исключениях в
Data
, указывающие, что предел составляет 10 КБ. - Максимальное значение
Configuration.setMaxSchedulerLimit(int)
уменьшено до 50, чтобы учесть некоторую задержку при завершении обработкиJobScheduler
. б/112817355
16 августа 2018 г.
Менеджер работ
WorkManager 1.0.0-alpha07
выпущен с исправлениями ошибок и небольшими изменениями API.
Исправления ошибок
- Исправлен потенциальный SQL-запрос с отрицательными ограничениями, который мог возвращать неограниченное количество результатов.
- Работа, выполнение которой завершилось, теперь корректно отменяет все ожидающие копии этой работы в других планировщиках. Это привело к превышению лимита заданий
JobScheduler
. б/111569265 - Исправлено исключение
ConcurrentModificationException
вConstraintTracker
. б/112272753 - Изменены аннотации типа возвращаемого значения
Data.getBooleanArray(String)
иData.getIntArray(String)
на@Nullable
вместо@NonNull
. б/112275229
Изменения API
-
Worker
теперь расширяет новый классNonBlockingWorker
. Это не влияет на текущее использование. В будущемNonBlockingWorker
станет полностью поддерживаемым объектом для пользовательских решений потоковой обработки. - Изменены аннотации типа возвращаемого значения
Data.getBooleanArray(String)
иData.getIntArray(String)
на@Nullable
вместо@NonNull
. б/112275229 - Расширения Kotlin:
Map.toWorkData()
устарел и добавленworkDataOf(vararg Pair<String, Any?>)
верхнего уровня для большей совместимости с существующими API.
10 августа 2018 г.
Навигация
Выпущена навигация 1.0.0-alpha05
с исправлениями ошибок.
Исправления ошибок
- Исправлена ошибка, приводившая к некорректному поведению обратного стека. б/111907708
- Исправьте ошибку в
equals()
сгенерированных классов ARG. B/111450897 - Исправьте сбой сборки в безопасных арга. B/109409713
- Исправить конверсию из идентификаторов ресурсов в имена Java b/111602491
- Исправьте сообщения об ошибках об нуляемости в плагине Safe Args.
- Добавьте пропущенные аннотации Nullability.
6 августа 2018 г.
Версии Androidx жизненного цикла, комнаты и релиз пьеса 2.0.0-rc01
. Все артефакты не изменяются с 2.0.0-beta01
.
1 августа 2018 г.
Workmanager
Workmanager 1.0.0-alpha06
выпускается с исправлениями ошибок.
Исправления ошибок
- Предотвратить блокировку базы данных при планировании работы. B/111801342
- Исправьте ошибку, которая заставляет
PeriodicWork
не работать по графику, когда в режиме Doze. B/111469837 - Исправьте состояние гонки при отслеживании ограничений, что заставляет
WorkManager
разбиться. Googlecodelabs/Android-Workmanager/Проблемы/56 - Создайте уникальный
WorkRequest
S при использованииWorkRequest.Builder#build()
. B/111408337 - Включите использование
RescheduleReceiver
только тогда, когда в нем нужныWorkRequest
, которые нуждаются. B/111765853
24 июля 2018 г.
Workmanager
Workmanager 1.0.0-alpha05
выпускается с важными исправлениями ошибок и изменениями журнала.
Изменения API
-
WorkManager.getInstance()
теперь аннотируется@NonNull
вместо@Nullable
. Вместо этого, если Синглтон не инициализируется в случаях ручной инициализации, этот метод будет выброситьIllegalStateException
. Это нарушающее изменение API. - Добавлен новый API,
Configuration.Builder.setMinimumLoggingLevel(int)
, который может управлять словесностью Workmanager. По умолчанию журнал журнала WorkmanagerLog.INFO
и выше. - Изменена подпись
Data.getString()
поэтому он больше не требует значения по умолчанию (оно неявноnull
). Это нарушающее изменение API. - Наметило некоторые методы, необходимые только для внутреннего использования в качестве
@hide
. Это включает в себя конструкторConstraints
,Data.toByteArray()
иData.fromByteArray(byte[])
. Это нарушающее изменение API.
Исправления ошибок
- Workmanager больше не выполняет работу во время известных случаев автоматического обращения. Это могло привести к аварии. B/110564377
- Фиксированное двойное запланирование
PeriodicWorkRequest
при использованииJobScheduler
. B/110798652 - Исправлена проблема с
PeriodicWorkRequest
, не выполняющим правильно после устройства. B/111469837 - Исправлена проблема с начальными задержками при использовании Firebase JobDispatcher. B/111141023
- Исправлены некоторые потенциальные условия гонки и проблемы с времени.
- Правильно освобождены
BroadcastReceiver
, которые больше не нужны. - Оптимизированная перенесенная производительность, когда приложения перезагружаются после закрытия силы.
- Разрешено
TestScheduler.setAllConstraintsMet(UUID)
чтобы быть вызванным до или после включения данногоWorkRequest
. B/111238024
Нарушение изменений
-
WorkManager.getInstance()
теперь аннотируется@NonNull
вместо@Nullable
. - Изменена подпись
Data.getString()
поэтому он больше не требует значения по умолчанию (оно неявноnull
). - Наметило некоторые методы, необходимые только для внутреннего использования в качестве
@hide
. Это включает в себя конструкторConstraints
,Data.toByteArray()
иData.fromByteArray(byte[])
.
19 июля 2018 г.
Навигация
Навигация 1.0.0-alpha04
и связанный плагин Gradle Safe Args содержит ряд изменений API, изменения поведения и исправления ошибок.
API / поведение изменения
- Navhostfragment всегда будет устанавливать текущий фрагмент в качестве основного фрагмента навигации, гарантируя, что менеджеры по фрагментам ребенка всплывают до того, как внешний NavController выпадает B/111345778
Безопасные аргии
- Нарушение изменения:
app:type
был изменен наapp:argType
чтобы избежать конфликтов с другими библиотеками, такими как ConstraintLayout 2.0.0-Alpha1 B/111110548 - Сообщения об ошибках от безопасных аргументов теперь кликируются B/111534438
- Классы ARGS теперь подтверждают, что атрибуты
NonNull
на самом деле не являются нулевыми B/111451769 - Дополнительные аннотации
NonNull
были добавлены в навигации и сгенерированные классы B/111455455 B/1114554566
Исправления ошибок
- Исправлена проблема с кнопкой спины системы после глубокой связи с пунктом назначения фрагмента B/111515685
12 июля 2018 г.
Навигация
Навигация 1.0.0-alpha03
и связанный плагин Gradle Safe Args содержит ряд изменений API, изменения поведения и исправления ошибок.
API / поведение изменения
- A navigationui.setupwithnavcontroller для панели инструментов был добавлен B/109868820
- Навигация .
- popbackstack () теперь возвращает false, когда задний стек пуст или когда данное идентификатор назначения не находится в задней стеке B/110893637
- FragmentNavigator теперь игнорирует навигационные операции после того, как FragmentManager сохранил состояние, избегая «не может выполнить это действие после исключений OnsaveInstancate» B/110987825
Безопасные аргии
- Нарушение изменения: не альфаноковарные символы в действии и именах аргументов будут заменены на верблюжьим оболочкам в соответствующих именах методов навигации
- Например,
DemoController.index
станетsetDemoControllerIndex
B/79995048 - Например,
action_show_settings
станетactionShowSettings
B/79642240
- Например,
- Преломление изменения: Аргументы теперь считаются не нулевыми по умолчанию. Чтобы разрешить нулевые значения на строковых и приподнятых аргументах, добавьте
app:nullable="true"
b/79642307 - Теперь вы можете использовать
app:type="long"
с DefaultValues в форме «123L» B/79563966 - В настоящее время поддерживаются приподнятые аргументы, используя полностью квалифицированное имя класса для
app:type
. Единственное поддерживаемое значение по умолчанию -"@null"
b/79563966 - Классы ARGS теперь реализуют
equals()
иhashCode()
b/79642246 - Плагин Safe Args теперь может быть применен к библиотечным проектам B/80036553
- Плагин Safe Args теперь может быть применен к функциям проектов B/110011752
Исправления ошибок
- Фиксированные проблемы при навигации во время методов жизненного цикла фрагмента B/109916080
- Фиксированные проблемы при навигации по вложенным графикам несколько раз b/110178671
- Фиксированные проблемы при использовании
setPopUpTo
с первым пунктом назначения на графике B/109909461 - Фиксированная проблема, где все
app:defaultValue
были переданы в виде строк B/110710788 - AAPT2 в комплекте с Android Gradle Plugin 3.2 Beta 01 Теперь добавляет правила для каждого атрибута
android:name
в навигационных файлах XML B/79874119 - Исправлена утечка памяти при замене фрагмента по умолчанию B/110900142
2 июля 2018 г.
Версии Androidx жизненного цикла, комнаты и релиз пьеса 2.0.0-beta01
.
Жизненный цикл
Исправления ошибок
- Правило прогики с фиксированным жизненным циклом, чтобы сохранить только реализации, а не поднтерфейсы B/71389427
- Правила прогики с фиксированной просмоткой, позволяющими запутываться и сокращать
Комната
API / поведение изменения
- Добавлена
RoomDatabase.Builder.setQueryExecutor()
чтобы позволить настройку, где запускаются запросы - Добавлена
Observable
поддержка Rxjava2 - Сгенерированные реализации DAO и базы данных в настоящее время являются окончательными
Исправления ошибок
- Укажите класс/имя поля в «Не удается найти getter для поля» ошибки B/73334503
- Фиксированная RoomopenHelper обратно совместимость со старыми версиями комнаты B/110197391
Пейджинг
Исправления ошибок
- Фиксированный контент, исчезающий в некоторых случаях приготовления (заполнители отключено, Positionaldatasource) b/80149146
- (Уже выпущенные в
1.0.1
) Фиксированные сбои, в которыхPagedListAdapter
иAsyncPagedListDiffer
не будут сигнализировать о событиях перемещения. B/110711937
26 июня 2018 г.
Пейджинг
Paging 1.0.1
выпускается с одним изгорожным аппаратом в runtime
. Мы настоятельно рекомендуем использовать 1.0.1
для стабильности. Paging Rxjava2 1.0.1
также выпускается и идентична 1.0.0-rc1
.
Исправления ошибок
- Фиксированные сбои, в которых
PagedListAdapter
иAsyncPagedListDiffer
не смогут сигнализировать о событиях перемещения. B/110711937
Workmanager
Workmanager 1.0.0-alpha04
выпускается.
Исправления ошибок
PeriodicWorkRequest
S теперь правильно перенесены при использовании реализации на основеAlarmManager
.Исправлена потенциал ANR при перенсе всех работников после остановки силы или перезагрузки. B/110507716
Добавлены аннотации нуля в различные API Workmanager. B/110344065
Непредубежные исключения, которые происходят во время исполнения работников. B/109900862
Разрешена деструктивная миграция базы данных в случае, если вы решите вернуться к более старой версии Workmanager. B/74633270
Исправлена миграционная авария при создании дублирующих неявных тегов. Это очень редкая проблема, которая возникла только в том случае, если вы сами использовали тот же неявный формат тегов.
19 июня 2018 г.
Комната
Комната 1.1.1
выпущена. Этот релиз идентичен комнате 1.1.1-rc1
.
Workmanager
Workmanager 1.0.0-alpha03
выпускается.
Исправления ошибок
Исправлена условие гонки в реализации на основе
AlarmManager
. B/80346526 .Исправлены дублирующиеся задания при использовании
JobScheduler
после перезагрузки устройства.Работа с контентом Triggers теперь сохраняется через перезагрузку. B/80234744
Обновления документации. b/109827628 , b/109758949 , b/80230748
Исправлена авария при повторном
WorkRequest
. B/109572353 .Фиксированные предупреждения компилятора Kotlin при использовании зависимости
work-runtime-ktx
.Workmanager теперь использует
Room
версии1.1.1-rc1
.
Изменения API
Добавлен
getStatusesSync()
, синхронная версияWorkContinuation.getStatuses()
.Worker
обладает возможностью различать инициированную пользователем отмены и временную остановку, запрашиваемую ОС.Worker.isStopped()
возвращаетtrue
, если какая -либо остановка была запрошена.Worker.isCancelled()
возвращаетtrue
, когда работа была явно отменена. B/79632247Добавьте поддержку JobParameters#getNetwork () на API 28. Это выявляется через
Worker.getNetwork()
.Добавлена
Configuration.Builder.setMaxSchedulerLimit(int maxSchedulerLimit)
, чтобы вы могли обеспечить соблюдение того, сколько заданий можно отправить вJobScheduler
илиAlarmManager
. Это помогает предотвратить взять все ваши доступныеJobScheduler
WorkManager
Добавлена
Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId)
который помогает определить ряд идентификаторов заданийJobScheduler
для использованияWorkManager
. B/79996760Worker.getRunAttemptCount()
Возвращает текущее количество прогонов для данногоWorker
. B/79716516WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork)
позволяет вам внедрить уникальныйPeriodicWorkRequest
. B/79600647WorkManager.cancelAllWork()
Отменяет всеWorker
с. Библиотеки, которые зависят отWorkManager
могут запросить, когда этот метод был вызван последним, используяWorkManager.getLastCancelAllTimeMillis()
для дополнительной очистки внутреннего состояния.Добавлен
WorkManager.pruneWork()
для удаления завершенных заданий из внутренней базы данных. b/79950952 , b/109710758
Изменения поведения
- Добавлен неявный тег для всех
WorkRequest
S, который является полностью квалифицированным названием класса дляWorker
. Это позволяет удалятьWorkRequest
S безtag
или когдаid
недоступен. B/109572351
Нарушение изменений
Переименован
Worker.Result
Worker.WorkerResult
Worker.onStopped
теперь имеет дополнительный параметрisCancelled
который установлен наtrue
когдаWorker
был явно отменен.
7 июня 2018 года
Навигация 1.0.0-alpha02
выпускается.
Навигация
Изменения поведения
FragmentNavigator
теперь используетsetReorderingAllowed(true)
. B/109826220Навигация теперь Urldecodes Arguments, проанализированные из URL -адресов глубоких ссылок. B/79982454
Исправления ошибок
Исправлена
IllegalStateException
при вызове навигации из методов жизненного цикла фрагмента. B/79632233Навигация теперь зависит от библиотеки поддержки 27.1.1, чтобы исправить мерцание при использовании анимации. B/80160903
Исправлена
IllegalArgumentException
при использовании defaultnavhost = "true" в качестве фрагмента ребенка. B/79656847Исправлена
StackOverflowError
при использовании NavdeeplinkBuilder. B/109653065Исправлена
IllegalArgumentException
при перемещении обратно к вложенному графику. B/80453447Исправлена проблема с перекрывающимися фрагментами при использовании
launchSingleTop
. B/79407969Навигация теперь создает правильный синтетический задний стек для вложенных графиков. B/79734195
NavigationUI теперь выделит правильный элемент при использовании вложенного графика в качестве
MenuItem
. B/109675998
Изменения API
Атрибут
clearTask
для действий и связанный API вNavOptions
устарел. B/80338878Атрибут
launchDocument
для действий и связанный с ними API вNavOptions
устарел. B/109806636
24 мая 2018 г.
Workmanager 1.0.0-alpha02
выпускается.
Workmanager
Исправления ошибок
Исправлена
NullPointerException
наState.isFinished()
. B/79550068Исправлена проблема, из -за которой
Worker
были перенесены поApplication.onCreate()
. B/79660657Исправлена проблема, в которой вы могли запланировать больше работы, чем разрешена ОС. B/79497378
Перенос очистки замков, связанных с
Worker
, в фоновую нить.Реализация
AlarmManager
теперь правильно очищается, когда все ожидающие работы завершены.Фиксированная очистка SQL-запросы, которые затрагивали неанглийские локалы. B/80065360
Добавлена поддержка
float
S вData
. B/79443878Data.Builder.putAll()
теперь возвращает экземплярBuilder
. B/79699162Больше Javadoc и исправления в документации. B/79691663
Изменения API
Worker
могут реагировать на остановку.Worker.isStopped()
можно использовать для проверки, был лиWorker
остановлен.Worker.onStopped()
может использоваться для выполнения легких операций очистки.Worker.getTags()
API возвращаетSet
тегов, связанных сWorker
.Добавлено
javax.time.Duration
перегрузки для API, которые занимают сочетание продолжительности иTimeUnit
S. Это охраняется@RequiresApi(26)
.Расширения
WorkManager
перешли из пакетаandroidx.work.ktx
в пакетandroidx.work
. Старые расширения устарели и будут удалены в будущей версии.Configuration.withExecutor()
устарел. ИспользуйтеConfiguration.setExecutor()
вместо этого.
16 мая 2018 года
Paging Rxjava2 1.0.0-rc1
и комната 1.1.1-rc1
выпускаются. Мы настоятельно рекомендуем использовать комнату 1.1.1-rc1
вместо 1.1.0
, если вы используете миграции.
Комната
Исправлена ошибка, в которой комната не обработала бы инициализацию после миграции должным образом B/79362399
Пейджинг
Paging rxjava2
движется, чтобы освободить кандидата без изменений от начальной альфа.
8 мая 2018 года
Пейджинг 1.0, навигация и рабочая манагер Alphas, комната 1.1, Androidx
Пейджинг 1.0.0
и комната 1.1.0
выпускаются вместе с альфа для двух новых компонентов архитектуры - навигация и Workmanager.
Пейджинг и комната не имеют изменений с момента последних кандидатов на релиз.
Новая библиотека: навигация
Навигация обеспечивает основу для навигации в приложении. Этот первоначальный выпуск- 1.0.0-alpha01
.
Новая библиотека: Workmanager
Workmanager упрощает планирование и выполнение гарантированной, с учетной плановой работой. Этот первоначальный выпуск- 1.0.0-alpha01
.
Androidx
Компоненты архитектуры перемещаются, чтобы стать частью Androidx, включая обновленные имена пакетов, имена артефактов и зависимости от других библиотек Androidx. Они выпускаются в соответствии с версией 2.0.0-alpha1
для использования в сочетании с другими библиотеками Androidx.
Расширения Котлина
ViewModel, ReactiveStreams и SQLite (ранее «база данных») - все они включают библиотеки расширения Kotlin, добавленные в рамках выпуска Androidx Alpha. Кроме того, навигация и Workmanager включают модули -KTX. Каждый из этих удлиненных модулей можно найти в добавлении компонентов .
2 мая 2018 года
- Комната 1.1.0 выпустить кандидат
- Комната
1.1.0-rc1
выпускается.
Исправления ошибок
- Комната теперь совместим с Kotlin
1.2.40
. B/78328708
19 апреля 2018 г.
Кандидат в пейджингу
Пейджинг 1.0.0-rc1
и комната 1.1.0-beta3
выпускаются.
Пейджинг
У нас нет более известных проблем или новых функций, запланированных для выпуска Paging 1.0.0
. Пожалуйста, обновите свои проекты, чтобы использовать 1.0.0-rc1
и помогать нам сражаться с ним, чтобы мы могли отправить скалу Solid 1.0.0
.
В этом выпуске нет изменений, это то же самое, что 1.0.0-beta1
.
Комната
Исправления ошибок
- Исправить ошибку компиляции, когда Kotlin Pojo ссылается на сущность по отношению, которая была определена в Java B/78199923
5 апреля 2018 года
Комната 1.1.0-beta2
, пейджинг 1.0.0-beta1
и пейджинг rxjava 1.0.0-alpha1
выпускаются.
Пейджинг будет в бета -версии в течение короткого времени, прежде чем выпустить кандидата. Мы не планируем дальнейшие изменения API для Paging 1.0
, а полоса для любых изменений API очень высока.
Поддержка Alpha Rxjava2 для пейджинга выпускается в виде отдельного необязательного модуля ( android.arch.paging:rxjava2:1.0.0-alpha1
) и будет временно версировать отдельно до тех пор, пока не стабилизируется.
Эта новая библиотека предоставляет альтернативу Rxjava2 LivePagedListBuilder
, способную построить Observable
S и Flowable
S, принимая Scheduler
S вместо Executor
S:
Котлин
val pagedItems = RxPagedListBuilder(myDataSource, /* page size */ 50) .setFetchScheduler(myNetworkScheduler) .buildObservable()
Ява
Observable<PagedList<Item>> pagedItems = RxPagedListBuilder(myDataSource, /* page size */ 50) .setFetchScheduler(myNetworkScheduler) .buildObservable();
Пейджинг
Новые возможности
-
RxPagedListBuilder
добавляется через новыйandroid.arch.paging:rxjava2
Artifact.
Изменения API
API изменяется, чтобы прояснить роль исполнителей в строителях:
Переименованное
setBackgroundThreadExecutor()
вsetFetchExecutor()
(вPagedList.Builder
иLivePagedListBuilder
)Переименован
setMainThreadExecutor()
вsetNotifyExecutor()
(вPagedList.Builder
).
Fixed
PagedList.mCallbacks
участник был частным.
Исправления ошибок
LivePagedListBuilder
запускает первоначальную нагрузкуPagedList
на указанного исполнителя, а не в пул резьбы для ввода арх.Фиксированное поведение недействительной во внутренних обертках
DataSource
(используется для реализацииDataSource.map
, а также загрузкуPositionalDataSource
с заполнителем) b/77237534
Комната
Исправления ошибок
Исправлена критическая ошибка в RX
Single
и,Maybe
реализациях, где он будет перерабатывать запрос заранее, вызывая проблемы, если вы добавите более 1 наблюдателя в возвращенныйSingle
или,Maybe
инстакции. B/76031240PoomDataBase.clearalltables не будет
VACUUM
базу данных, если она будет вызвана внутри транзакции. B/77235565
21 марта 2018 г.
Комната 1.1.0-beta1
, пейджинг 1.0.0-alpha7
и жизненные циклы 1.1.1
выпускаются.
Комната
Изменения API
- Основываясь на обратной связи API,
@RawQuery
больше не принимает передачуString
в качестве параметра запроса. Вам нужно использовать SupportsqliteQuery . (См. SimplesQliteQuery, чтобы легко создать экземпляр поддержки SupportSqliteQuery с поддержкой аргументов). - PoomDataBase.Builder's SwarkbackTodestructivemigration от метода теперь принимает
vararg int
вместоvararg Integer
.
Исправления ошибок
PoomDataBase.clearalltables теперь пытается вернуть место обратно в операционную систему, установив контрольную точку Wal и
VACUUM
проведя базу данных.@RawQuery
теперь принимает любое POJO для собственностиobservedEntities
, если POJO ссылается на одно или несколько сущностей через своиEmbedded
поля илиRelation
. B/74041772Пейджинг: Реализация данных Room теперь правильно обрабатывает мультител-зависимости (например, отношения и соединения). Раньше они не могли вызвать новые результаты или не смогли составить. B/74128314
Жизненные циклы
Только одно небольшое изменение: android.arch.core.util.Function
перемещается из arch:runtime
в arch:common
. Это позволяет использовать его без зависимости во время выполнения, например, в paging:common
ниже.
lifecycle:common
- зависимость lifecycle:runtime
, поэтому это изменение не влияет на lifecycle:runtime
напрямую, только модули, которые напрямую зависят от lifecycle:common
, как это делает пейджин.
Пейджинг
Paging 1.0.0-alpha7
выпускается вместе с жизненными циклами 1.1.1
. Поскольку Paging Alpha7 зависит от перемещения класса Function
, упомянутого выше, вам нужно будет обновить свой lifecycle:runtime
до android.arch.lifecycle:runtime:1.1.1
.
Paging alpha7
планируется стать окончательным выпуском, прежде чем Paging попадет в бета -версию.
Изменения API
- Объекты
DataSource.LoadParams
теперь имеют публичный конструктор, а объектыDataSource.LoadCallback
. Это позволяет обернутьDataSource
или напрямую тестированиеDataSource
с фиктивным обратным вызовом. B/72600421 - Mappers для DataSource и DataSource.Factory
-
map(Function<IN,OUT>)
позволяет преобразовать, обернуть или украшать результаты, загруженныеDataSource
. -
mapByPage(<List<IN>,List<OUT>>)
обеспечивает то же самое для обработки партии (например, если элементы, загруженные из SQL, должны дополнительно запросить отдельную базу данных, которая может быть сделана в виде партии.)
-
-
PagedList#getDataSource()
добавляется в качестве удобного метода b/72611341 - Все устаревшие классы были удалены из API, включая остатки пакета
recyclerview.extensions
иLivePagedListProvider
. -
DataSource.Factory
изменяется с интерфейса на абстрактный класс, чтобы включить функциональность карты.
Исправления ошибок
- Измененные строители были окончательными. B/70848565
- Реализация
DataSource
комнаты теперь установлена для обработки многоточных запросов-это исправление содержится в комнате 1.1.0-beta1, см. Выше. - Исправлена ошибка, в которой
BoundaryCallback.onItemAtEndLoaded
не будет вызван дляPositionalDataSource
если заполнители включены, а общий размер - это точное множество размеров страницы.
2 марта 2018 г.
Комната 1.1.0-alpha3
выпускается. Это последний запланированный альфа -выпуск для комнаты 1.1.0
.
Изменения API
Методы
addObserver
иremoveObserver
от InvalidationTracker теперь синхронны и должны быть вызваны в потоке без UI. Это предотвращает некоторые условия гонки при наблюдении за таблицами.На классе Poomdatabase есть новый метод
clearAllTables()
, который усекнет все содержимое таблицы. B/63807999SupportSQLiteQuery
теперь имеет методgetArgCount()
, который возвращает количество параметров запроса. B/67038952
Исправления ошибок
@RawQuery
теперь правильно поддерживается для подсказок. B/72600425Комната теперь правильно имена сгенерировали классы
Dao
, чтобы избежать конфликтов имен, когда 2 или более интерфейсовDao
являются внутренними классами в том же пакете и имеют одинаковое имя. B/73536380Общие типы поля в
Pojo
S должным образом проанализированы как член расширяющего класса. B/73534868Параметры запроса в интерфейсах
Dao
, которые унаследованы от артефактов зависимостей, теперь правильно проанализированы. B/68118746Запросы, сгенерированные для
@Relation
S, теперь правильно избегают имен поля. B/70925483
27 февраля 2018 г.
Paging 1.0.0-alpha6
выпускается вместе с выпуском библиотеки поддержки 27.1.0. ListAdapter
и несколько связанных классов были перемещены из библиотеки Paging непосредственно в Recyclerview, а также несколько переименования, чтобы сделать функцию определенных классов более четкой. Этот альфа -выпуск подкисления, вероятно, последним, кто имеет значительные изменения разрыва API.
Изменения API
- Занятия переехали в Recyclerview-V7:
-
ListAdapter
-
- Занятия переименованы и переехали в Recyclerview-V7:
-
ListAdapterHelper
->AsyncListDiffer
-
ListAdapterConfig
->AsyncDifferConfig
-
DiffCallback
->DiffUtil.ItemCallback
-
- Занятия переименованы внутри подсказки:
-
PagedListAdapterHelper
->AsyncPagedListDiffer
-
Занятия, которые были перемещены, были полезны наряду с переработкой, независимо от библиотеки Пейджинг. Это означает, что их можно использовать без в зависимости от выпуска альфа -альфа, но также означает, что приложения, использующие пейджинг, должны обновить до Alpha 6, и одновременно поддержать библиотеку 27.1.0.
** Руководство по миграции для подкидки Alpha6: **
- Обновление подключения и переработки зависимостей от
android.arch.paging:runtime:1.0.0-alpha6
иcom.android.support:recyclerview-v7:27.1.0
- Они должны быть сделаны одновременно, так как ListAdapter был перенесен от Paging в Recyclerview
- Обновите любые ссылки
ListAdapterHelper
наAsyncListDiffer
-
getItem(index)
/getItemCount()
были удалены, в пользу шаблона CallinggetCurrentList().getItem(index)
иgetCurrentList().size()
, которые являются более явными.
-
- Обновите любые ссылки
ListAdapterConfig
наAsyncDifferConfig
- Обновите любые ссылки
DiffCallback
наDiffUtil.IttemCallback
- Обновить любые ссылки
PagedListAdapterHelper
наAsyncPagedListDiffer
- Обновление ссылок
setList()
наsubmitList()
- переименован в уточнение асинхронного характера распада списка
Исправления ошибок
- Фиксированное прохождение неправильной начальной позиции в начальную нагрузку при отключении заполнителей. B/73513780
15 февраля 2018 г.
Комната 1.1.0-alpha2
выпускается.
Новые возможности
Комната теперь поддерживает открывающую базу данных в режиме журнала «Записать» . В этом режиме ваши записи больше не будут блокировать ваши запросы чтения. Несмотря на то, что он потребляет больше памяти (из -за нескольких соединений), этот режим обычно быстрее. По умолчанию комната будет использовать Wal, если устройство будет
API 16
или выше, и это не устройство с низким содержанием памяти. Вы можете управлять этим поведением, используя методsetJournalMode()
наRoomDatabase.Builder
. B/67757002Поддержка гуавы
ListenableFuture<T>
комната теперь поддерживаетOptional<T>
GuavaDAO
Чтобы использоватьListenableFuture<T>
, вам необходимо импортировать артефактguava
из комнаты (android.arch.persistence.room:guava:1.1.0-alpha2
).Комната теперь поддерживает возвращение
java.util.Optional<T>
изDAO
Queries.Методы интерфейса с реализациями по умолчанию теперь поддерживаются в методах
@Transaction
в классахDAO
. Это работает как дляJava 8
, так иKotlin
. B/72416735
Исправления ошибок
Конструкторы с
@Relation
не вызовут ошибку компиляции, если есть другой конструктор, который можно использовать. B/72884434Имена таблиц, сбежавшие с
'
В методах@Query
, теперь должным образом сбежались для трекера. B/72366965Комната теперь использует аннотации Kotlin
@Metadata
для чтения структуры класса во время обработки аннотаций. Это означает, что даже если POJO унаследован от зависимости, его имена параметров конструктора могут быть чтения должным образом. B/67181813Проблема с поиском путей миграции пониженной прохождения исправлена. B/72153525
Типы столбцов, не являющихся по умолчанию, теперь правильно обрабатываются при миграции из существующей базы данных в комнату. B/71953987
Комната теперь правильно обрабатывает устойчивую
boolean?
Поля в классах Kotlin. B/72786402
22 января 2018 г.
Живые циклы 1.1.0
, комната 1.1.0-alpha1
и пейджинг 1.0.0-alpha5
.
Жизненный цикл 1.1.0
Упаковка изменений
Теперь доступны новые, гораздо меньшие зависимости:
-
android.arch.lifecycle:livedata:1.1.0
-
android.arch.lifecycle:viewmodel:1.1.0
Изменения API
- Установленная
LifecycleActivity
иLifecycleFragment
уже были удалены - пожалуйста, используйтеFragmentActivity
,AppCompatActivity
илиFragment
поддержки. -
@NonNull
Аннотации были добавлены вViewModelProviders
иViewModelStores
- Конструктор
ViewModelProviders
устарел - пожалуйста, используйте его статические методы напрямую -
ViewModelProviders.DefaultFactory
был устарел - пожалуйста, используйтеViewModelProvider.AndroidViewModelFactory
- Статический
ViewModelProvider.AndroidViewModelFactory.getInstance(Application)
был добавлен для получения статическойFactory
, подходящей для создания экземпляровViewModel
иAndroidViewModel
.
Комната 1.1.0-альфа1
Новые возможности
-
RawQuery
: Этот новый API позволяет@Dao
методы получать SQL в качестве параметра запроса B/62103290 , B/71458963 -
fallBackToDestructiveMigrationsFrom
: этот новый API вRoomDatabase.Builder
обеспечивает более тонкий контроль над тем, что разрешены исходные схемы. - Комната теперь поддерживает только новые API-интерфейсы подкисления (Alpha-4+), отбросив поддержку устаревшего
LivePagedListProvider
. Чтобы использовать новую комнату Alpha, вам нужно будет использовать Pagingalpha-4
или выше, а также переключиться сLivePagedListProvider
наLivePagedListBuilder
, если вы еще этого не сделали.
Исправления ошибок
- Улучшенная поддержка типов Kotlin KAPT. B/69164099
- Порядок полей больше не лишает аннулирования схемы. B/64290754
Пейджинг 1.0.0-Альфа5
Исправления ошибок
- Исправлена загрузка страницы при отключении заполнителей B/70573345
- Дополнительные журналы для отслеживания ошибки allogalargumentException b/70360195 (и умозрительное исправление на стороне комнаты)
- Образец кода Javadoc B/70411933 , B/71467637
11 декабря 2017 г.
Paging alpha4-1
выпускается. Это небольшой выпуск ошибки для подкачки Alpha 4.
Исправления ошибок
- Не проверяйте параметры обратного вызова для неверных источников данных. b/70353706 , b/70360195
7 декабря 2017 г.
Paging alpha4
выпускается со значительными изменениями и дополнениями, в основном нацеливающимися на сеть, и базу данных Network +.
Изменения API
DataSource
теперь является асинхронным API, чтобы облегчить пейджин непосредственно из сети:- Единственная точка входа для начального размера и данных
- Поддерживает повторение сети, удерживая обратный вызов, а позже отправляя
- Обратные вызовы Threadsafe разрешают асинхронную загрузку для создания однопользового
PagedList
в потоке пользовательского интерфейса. - Более четкое поведение ошибок вокруг начальных параметров нагрузки
TiledDataSource
переименован вPositionalDataSource
, чтобы отразить его индексацию на основе позиций, и тот факт, что он не плит, когда заполнители отключены.PageKeyedDataSource
добавляется для поддержки следующего/до жетонов, встроенных в нагрузки на страницу сети.KeyedDataSource
переименован вItemKeyedDataSource
чтобы понять разницу.LivePagedListBuilder
иDataSource.Factory
заменитеLivePagedListProvider
. Строитель предоставляет такую же возможность с большей настройкой и более простыми значениями по умолчанию. Фабрика позволяет коду генерацииDataSource
оставаться независимым отLiveData
.PagedList.BoundaryCallback
добавлен для базы данных + сетевой usecase.PagedList.Builder
Constructor принимаетDataSource
+PagedList.Config
, теперь более похожий наLivePagedListBuilder
и позволяет бриллиантовому оператору на языке Java или предполагаемых типах в Котлине.PagedList.getConfig()
добавлен, иPagedList.Config
теперь обладает публичными объектами члена.KeyedDataSource.loadBefore()
больше не ожидает, что результаты будут отменены вспять.PagedListAdapter.onCurrentListChanged()
добавлен для прослушивания обновлений, о которых отображается PageDlist.
Исправления ошибок
- Фиксированное индексаутофундсексионов в PagegenListAdapter (Helper) B/67883658
1.0.0 - 6 ноября 2017 г.
Все основные компоненты (кроме пейджинг) сейчас 1.0.0
. Это то же самое, что и rc1
за исключением одного изменения в библиотеку reactivestreams
.
Исправления ошибок
-
LiveDataReactiveStreams
теперь правильно реализует спецификацию реактивных потоков . б/67999342
Кандидат в освобождение - 18 октября 2017 г.
Все основные артефакты (кроме пейджинга) сейчас 1.0.0-rc1
.
У нас нет более известных проблем или новых функций, запланированных для выпуска 1.0.0
. Пожалуйста, обновите свои проекты, чтобы использовать 1.0.0-rc1
и помогите нам сразиться с ним, чтобы мы могли отправить камень Solid 1.0.0
.
Изменение поведения
- С помощью этого выпуска
Lifecycle.Event#ON_STOP
теперь отправляется, когда называетсяonSaveInstanceState
(предыдущий, он был просто намечен какCREATED
без отправкиON_STOP
). Вы можете прочитать больше об этом в документации жизненного цикла .
Исправления ошибок
Комната:
- Комната теперь зависит от последнего Xerial Artifact, который устраняет проблемы
OutOfMemory
во время компиляции. B/62473121 - Методы
Query
теперь могут быть аннотированы@Transaction
. См. Справочные документы на@Transaction
для получения подробной информации. B/65112315 - Класс
StringUtil
в комнате удаляется из публичного API (он никогда не был предназначен как публичный API).
- Комната теперь зависит от последнего Xerial Artifact, который устраняет проблемы
Живые циклы:
LiveData
правильно работает, когда активность частично покрывается API <24. B/65665621Методы
OnLifecycleEvent
в родительских классах теперь называются должным образом или предупреждение печатается во время компиляции, если это невозможно. B/63474615Жизненный цикл теперь удерживает
WeakReference
обратно к своему жизненному циклелаущику , чтобы избежать утечки жизненного цикла , если жизненный цикл будет храниться в памяти дольше, чем обычно (это всего лишь меры предосторожности, вы все равно должны быть осторожны, чтобы не протечьLifecycle
).
9 октября 2017 г.
Paging alpha-3
выпускается; что делает его совместимым с выпуском beta 2
жизненных циклов и комнаты.
Исправления ошибок
- Улучшенная документация под пейджингом.
5 октября 2017 г.
Все основные артефакты (кроме пейджинг) теперь beta 2
. В этом выпуске нет новой версии Paging.
Исправления ошибок
Живые циклы:
-
LiveDataReactiveStreams
теперь должным образом отписывается от издателя источника, когдаLiveData
не активна. B/62609183 - События жизненного цикла должным образом распространяются на родительские классы, когда родительский класс находится из другого модуля. B/63474615
- Livedata правильно обрабатывает наблюдателей, когда они отписывают подписку во время создания подписки. B/66337741
FullLifecycleObserver
для Java 8 Language Artifact теперь доступен в дереве зависимостей. B/66525578Для Proguard добавьте следующие строки в свой файл Proguard. (Это не будет необходимо, когда 1,0,0 кораблей)
-
-keep class * implements android.arch.lifecycle.GeneratedAdapter {<init>(...);}
-
-
Комната:
- Комната теперь напечатает ошибку в составное время, когда возвращенный Pojo в методе
@Query
имеет поле@NonNull
, которое не соответствует ни одному из столбцов в ответе запроса. Если поле@Nullable
, комната только печатает предупреждение. B/67115337 - Комната теперь проверяет индексы в более новых версиях ОС. B/63132683
- Комната выбирает конструктор NO-Arg по умолчанию, если в Pojo есть несколько соответствующих конструкторов. B/67353427
- Первичные ключи с одним столбцом могут быть
Nullable
, если этоInteger
илиLong
. B/67086876 - Трекер с неверно правильно обрабатывает повторное вход в тестовый режим. B/65471397
- Комната теперь проверяет недопустимые символы в именах столбцов и таблиц во время компиляции (неверные символы:
`
,"
). B/6474911111111111 .
- Комната теперь напечатает ошибку в составное время, когда возвращенный Pojo в методе
21 сентября 2017 г.
С этим выпуском все модули компонентов архитектуры достигают хотя бы beta 1
(кроме новой библиотеки пейджинг, которая является alpha 2
).
Мы не планируем больше изменений API. Незапланированные изменения могут произойти, но стержень для изменения любого API до 1.0.0
стабильная стабиль очень высока и вряд ли произойдет.
- LifeCycleActivity & LifeCycleFragment будут удалены до стабильной
1.0.0
. They are not needed when using Support Library26.1.0
or later.
Unlike the alpha phase, beta phase is scheduled to be a very short duration.
Version Changes
- Lifecycle Extensions and Room are now
beta 1
- Paging is now
alpha 2
- No changes in Lifecycles (runtime, common) and Arch Core (common). Both of these artifacts are version
1.0.0
since September 13.
New Artifacts
Lifecycles now have a new artifact called
common-java8
. This artifact contains a new interface called DefaultLifecycleObserver ; which has default implementations for all Lifecycle methods. If you are using Java 8 language, you should prefer this artifact over annotations.- Due to a bug in
beta1
, you need to add an explicit dependency onandroid.arch.lifecycle:common:1.0.1
module to use the newcommon-java8
artifact. This issue will be fixed inbeta2
.
- Due to a bug in
Packaging Changes
-
android.arch.persistence.room.db
has been moved toandroid.arch.persistence.db
-
android.arch.persistence.room.db-impl
has been moved and renamed toandroid.arch.persistence.db-framework
Both of these artifacts are already a dependency on Room so unless you were directly using them, you should not need to change anything in your build files.
Изменения API
Комната:
- @ColumnInfo annotation now supports setting a collation on the column. b/62007004
-
transient
fields are now ignored by default unless they are annotated with@ColumnInfo
,@Embedded
or@Relation
. b/62600692 - Primary Keys must be annotated with
@NonNull
unless they are auto generated. b/64292391- This change may require a schema migration. Приносим извинения за неудобства.
- Added a new convenience annotation ( @Transaction ) which overrides a
DAO
method and runs it inside a transaction.
Support SQLite Database:
- API changes in database configuration. b/65349673 b/65499876
Paging:
- Improved Paging documentation with more examples and thread annotations.
Исправления ошибок
- Комната:
- Kotlin multi-line strings in
@Query
methods are handled properly. b/65809374
- Kotlin multi-line strings in
- Paging:
- Paging artifact does not depend on junit anymore. b/65690261
1.0.0 Alpha 9-1 - September 13, 2017
This is a major release where core lifecycle artifacts (runtime, common) and arch core (common) reach to stable version 1.0.0
.
Along with this change, Support Library 26.1.0 now depends on these libraries. Both AppCompatActivity and Support Fragment now implement the LifecycleOwner interface.
This release also depends on Support Library 26.1.0
to take advantage of the new integration.
New Library: Paging
This release also includes a new library called Paging , which allows easily loading large data sets into a RecyclerView in chunks when necessary. Paging is released as alpha1
and will have its own release cycle.
Изменения API
- The following classes are deprecated and will be removed in a future release:
Исправления ошибок
Generated classes are now annotated with
@Generated
if the app has the annotation in the classpath. b/35754819Fixed MediatorLiveData's observer comparison bug. b/64413274
SQLite
WITH
queries are now supported with [LiveData]. [ref-LiveData] b/62510164Fixed a bug where InvalidationTracker would not send the right list if more than 1 table is observed. b/65099281
Fixed a bug where Room would generate different files on Windows. b/64470691
LifecycleObservers in root package are now supported. b/62310817
1.0.0 Alpha 9 - August 16, 2017
Исправления ошибок
- Fixed a bug in LiveData , that second Observer was ignored when first one was removed from its
onChanged
method. b/64285805
1.0.0 Alpha 8 - August 1, 2017
Изменения поведения
-
NOT NULL
constraint is added for columns of primitive types or columns annotated with NonNull . This changes the structure of your tables, so if you're already using Architecture Components alpha 7 or earlier, you need to implement a migration if you want to keep the data, or use thefallbackToDestructiveMigration()
method in the builder. b/62007004
Изменения API
- SupportSQLiteProgram now extends AutoCloseable . b/63131997
1.0.0 Alpha 7 - July 26, 2017
Исправления ошибок
Fixed critical bug in LifecycleRegistry
removeObserver
method, which broke a LifecycleObserver readdition.Fixed InvalidationTracker for custom databases b/63162311
1.0.0 Alpha 6 - July 25, 2017
Изменения в поведении
The order of LifecycleObserver calls was changed. Previously observers were always called in the order of their addition: if
observer1
is added beforeobserver2
, it will receiveON_CREATE
and all other events beforeobserver2
. This is no longer true for destruction events, for them observers are called in the reverse order of addition. So current behavior is: ifobserver1
is added beforeobserver2
, thenON_CREATE
is sent first toobserver1
, then toobserver2
(same happens forON_START
andON_RESUME
), butON_PAUSE
event is sent first toobserver2
and only then toobserver1
(same forON_STOP
andON_DESTROY
).Room throws an exception if migration is missing. Previously Room would just clear the database, but now it crashes. Developers can opt-in to the clearing behavior by calling the builder API. b/63872392
Изменения API
Added
fallbackToDestructiveMigration()
method toRoomDatabase.Builder
to clear the database if migration is missing. b/63872392Architecture components now depend on support library 26.0.0
Исправления ошибок
Fixed handling @Relation nested into @Embedded . b/63736065
Fixed testing migrations for tables with autoincremented primary key. b/63393618
Now @Queries that run DELETE or UPDATE queries correctly receive arguments. b/63872538
Now ViewModels are retained, when owner fragment is in the backstack and configuration change happens twice. b/38445801
1.0.0 Alpha 5 - July 18, 2017
Изменения API
Added a new callback method to
RoomDatabase.Builder
to observe when a database is created or opened. b/62699324@Query now may return RxJava
Maybe
orSingle
. b/62231019
You need to depend on android.arch.persistence.room:rxjava2
artifact to add RxJava support to Room.
Исправления ошибок
Fixed
@Delete
queries without any parameters. b/63608092Fixed Room type checks for getters and setters. b/63733651
1.0.0 Alpha 4 - July 11, 2017
Изменения API
Added a new convenience method (
runInTransaction()
) to RoomDatabase .@Insert
,@Delete
and@Update
methods can now have parameters from different entity types. b/62682405
Исправления ошибок
Fixed
byte[]
handling in@Dao
methods. b/62460045Migration check in Room now uses case-insensitive comparison. b/62875382
Fixed the proguard configuration for the Lifecycles artifact. b/62113696
1.0.0 Alpha 3 - June 15, 2017
Изменения API
@OnLifecycleEvent
supports only 1 event parameter now. This is a change in preparation for Java 8 support so that we can migrate to interfaces with default methods in the future. In relation to this change, only the@OnLifecycleEvent(ON_ANY)
annotated methods can receive a second parameter of typeEvent
(first parameter is theLifecycleOwner
). See Lifecycle docs for details.LifecycleActivity
andLifecycleFragment
classes are moved into theandroid.arch.lifecycle:extensions
artifact.MigrationTestHelper receives the Instrumentation instance instead of the
Context
to be able to read the schema from the test assets and create the database in the application context.@Insert
,@Delete
and@Update
annotations in@DAO
methods can now haveIterable
as the parameter type. b/62259820
Исправления ошибок
Overridden methods with lifecycle events are not called multiple times anymore.
Multiple
IN
parameters are now handled properly. b/62608681Abstract DAO classes can now have a constructor that receives the
@Database
instance. b/38488747DAO
's can now have a super class/interface with type parameters. b/62103620
1.0.0 Alpha 2 - June 2, 2017
Изменения API
InvalidationTracker callback now receives the list of changed table names. ( b/38468740 )
Reduced the API surface of the SupportSQLiteDatabase class. ( b/38481640 )
Исправления ошибок
- Proguard files for lifecycles. ( b/62113696 )
- Loss of data with Type Converters. ( b/62100716 )
- Allow returning
Long[]
from@Insert
queries.
1.0.0 Alpha 1 - May 17, 2017
MinSDK: 14
General advisories
While we did a lot of testing prior to launch, Architecture Components are currently in alpha. If you're building a production app, be aware that the API will change before the 1.0 release and might not be fully robust. If you're not comfortable debugging problems in libraries you use, we recommend trying Architecture Components in side projects first.
We're not recommending that everyone migrate today. We'll have a migration guide ready for the 1.0 release of architecture components.
Known limitations and issues
- Lifecycle
Fragment
andActivityCompat
in the Support Library do not yet implementLifecycleOwner
interface. They will when Architecture Components reaches 1.0.0 version.