Архив примечаний к выпуску компонентов архитектуры

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. Это позволяет комнате использовать собственные токенизаторы. Встроенные токенизаторы по-прежнему определяются в 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 при запуске приложения. Исправления б/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 теперь поддерживают типы возврата Rx Completable , 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.

Новые возможности

Изменения 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() классов Generated Args. б/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. По умолчанию журнал журнала Workmanager Log.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/79996760

  • Worker.getRunAttemptCount() Возвращает текущее количество прогонов для данного Worker . B/79716516

  • WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork) позволяет вам внедрить уникальный PeriodicWorkRequest . B/79600647

  • WorkManager.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

  • Исправлена ​​проблема, в которой вы могли запланировать больше работы, чем разрешена ОС. б/79497378

  • Перенос очистки замков, связанных с Worker , в фоновую нить.

  • Реализация AlarmManager теперь правильно очищается, когда все ожидающие работы завершены.

  • Фиксированная очистка SQL-запросы, которые затрагивали неанглийские локалы. B/80065360

  • Добавлена ​​поддержка float S в Data . B/79443878

  • Data.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/76031240

  • PoomDataBase.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/63807999

  • SupportSQLiteQuery теперь имеет метод 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() были удалены, в пользу шаблона Calling getCurrentList().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> Guava DAO Чтобы использовать 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, вам нужно будет использовать Paging alpha-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 .

Исправления ошибок

Кандидат в освобождение - 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).
  • Живые циклы:

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

21 сентября 2017 г.

С этим выпуском все модули компонентов архитектуры достигают хотя бы beta 1 (кроме новой библиотеки пейджинг, которая является alpha 2 ).

Мы не планируем больше изменений API. Незапланированные изменения могут произойти, но стержень для изменения любого API до 1.0.0 стабильная стабиль очень высока и вряд ли произойдет.

  • LifeCycleActivity & LifeCycleFragment будут удалены до стабильной 1.0.0 . Они не нужны при использовании библиотеки поддержки 26.1.0 или более поздней версии.

В отличие от фазы альфа, бета -фаза планируется быть очень короткой продолжительностью.

Версия меняется

  • 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 on android.arch.lifecycle:common:1.0.1 module to use the new common-java8 artifact. This issue will be fixed in beta2 .

Packaging Changes

  • android.arch.persistence.room.db has been moved to android.arch.persistence.db
  • android.arch.persistence.room.db-impl has been moved and renamed to android.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:

  • Paging:

    • Improved Paging documentation with more examples and thread annotations.

Исправления ошибок

  • Комната:
    • Kotlin multi-line strings in @Query methods are handled properly. b/65809374
  • 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

Исправления ошибок

  • Generated classes are now annotated with @Generated if the app has the annotation in the classpath. b/35754819

  • Fixed MediatorLiveData's observer comparison bug. b/64413274

  • SQLite WITH queries are now supported with [LiveData]. [ref-LiveData] b/62510164

  • Fixed 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

Исправления ошибок

1.0.0 Альфа 8 — 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 the fallbackToDestructiveMigration() method in the builder. b/62007004

Изменения API

1.0.0 Альфа 7 — 26 июля 2017 г.

Исправления ошибок

1.0.0 Альфа 6 — 25 июля 2017 г.

Изменения в поведении

  • The order of LifecycleObserver calls was changed. Previously observers were always called in the order of their addition: if observer1 is added before observer2 , it will receive ON_CREATE and all other events before observer2 . This is no longer true for destruction events, for them observers are called in the reverse order of addition. So current behavior is: if observer1 is added before observer2 , then ON_CREATE is sent first to observer1 , then to observer2 (same happens for ON_START and ON_RESUME ), but ON_PAUSE event is sent first to observer2 and only then to observer1 (same for ON_STOP and ON_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 to RoomDatabase.Builder to clear the database if migration is missing. b/63872392

  • Architecture components now depend on support library 26.0.0

Исправления ошибок

1.0.0 Alpha 5 - July 18, 2017

Изменения API

You need to depend on android.arch.persistence.room:rxjava2 artifact to add RxJava support to Room.

Исправления ошибок

  • Fixed @Delete queries without any parameters. b/63608092

  • Fixed 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/62460045

  • Migration 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 type Event (first parameter is the LifecycleOwner ). See Lifecycle docs for details.

  • LifecycleActivity and LifecycleFragment classes are moved into the android.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 have Iterable 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/62608681

  • Abstract DAO classes can now have a constructor that receives the @Database instance. b/38488747

  • DAO 's can now have a super class/interface with type parameters. b/62103620

1.0.0 Alpha 2 - June 2, 2017

Изменения API

Исправления ошибок

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

Известные ограничения и проблемы