autoInit
аннотации @ServiceAnno
для классов, где указано имяscheme
начала действовать официально, после обновления совместимость с предыдущими версиями сохраняется, но модули бизнеса, выпущенные с помощью старых версий, требуют обновления и повторной публикацииRouterAnno
теперь поддерживает регулярные выражения, что делает переходы типа http://xxx/xxx
более удобнымиComponent.check()
вручную, вместо этого в конфиге добавлен новый атрибут errorCheck
, который при открытии проверяет наличие дубликатов во время отладкиsuspend
для Kotlinbefore
, исправлены на before
call
для запуска перехода теперь поддерживает больше расширений Kotlin для удобства использования@JvmField
@ServiceAnno
получила новый атрибут autoInit
, позволяющий автоматически инициализировать сервис после загрузки модуля. Этот процесс происходит каждый раз при загрузке или выгрузке модуля.#### v1.9.0-beta1
@ServiceDecoratorAnno
isCauseBy
в UtilЗамени все китайские символы на русский эквивалент:
мертвых
Таким образом, полный текст с исправлениями будет следующим:
мертвых[v1.0]8. 3. 1](https://github.com/xiaojinzi123/Component/releases/tag/v1. 8. 3. 1)
@ServiceAnno
, которые могут опционально реализовать интерфейс IServiceLifecycle
для получения обратных вызовов жизненного цикла модулейIApplicationLifecycle
, а не старый интерфейс IComponentApplication
. Хотя последний пока поддерживается, в будущих версиях он будет удален._
в начале имени.ServiceManager.get()
или FragmentManager.get()
в потоках, отличных от основного, если нет реализованного класса.#### v1.8.2.2
startActivityForResult
вместо активностей из фреймворка можно указывать requestCode
.ProxtActivity
после изменения пакета модуля impl
.router
добавлен переключатель boolean
для управления созданием документов (component_router_doc_enable
). Конфигурация аналогична componnet_router_doc_folder
, например ext.component_router_doc_enable = true
.RouterDoc
переименован в RouterDocFolder
.RouterDocEnable
, значение которого обычно совпадает со значением component_router_doc_enable
.Androidx
и не Androidx
.После изменения host
и path
URI страницей-перехватчиком происходит перезагрузка нового перехватчика целевой страницы.
Intent
не будет соответствовать перехватчику.Добавлены приоритеты выполнения перехватчиков interceptorPriorities
и interceptorNamePriorities
.
Исправлена проблема с получением ActivityResult
при одновременном использовании двух переходов.
commitAllowingStateLoss
не выполняется немедленно, а требует использования commitNowAllowingStateLoss
. Проблема чаще всего встречается в тестовых условиях.Улучшено логирование ошибок при получении ActivityResult
из-за повторения requestCode
.#### v1.8.1.1
Исправлена проблема синхронизации Query
URI с Bundle
после обновления версии.
Query
из Bundle
внутри перехватчиков.beforJumpAction
полностью переименовано в beforAction
afterJumpAction
полностью переименовано в afterAction
beforStartAction
, этот Action связан с методом startActivity
afterStartAction
, этот Action связан с методом startActivity
putXXX
для маршрута Fragment
ArrayList<? extends Serializable>
в RouterApi
и AutoWire
. Этот тип проверяется как Serializable
componnet_router_doc_folder
. Изменено на component_router_doc_folder
Исправление обработки userInfo
в Uri
при его отсутствии
Добавлена возможность использовать метод для проверки повторной активации маршрута. Navigator.useRouteRepeatCheck(boolean)
по умолчанию использует глобальное значение, которое по умолчанию равно true
Добавлена функция генерации документации, соответствующая issue#### v1.7.9
В класс ModuleManager
добавлен метод autoRegister()
, который автоматически загружает все модули
optimizeInit
Добавлена опция конфигурации для автоматической загрузки всех модулей при инициализации
Два вышеописанных изменения не поддерживаются Google App Bundle. Обратите внимание
В класс ParameterSupport
добавлена поддержка получения данных из Uri
Поддержка UserInfo
в Uri
при переходах. Для использования аннотации @UserInfoAnno
Исправление проблемы передачи значений при применении аннотации @FragmentAnno
к классу. Подробнее см. issue #51
Переименование метода haveProxyIntent
в isProxyIntentExist
в классе Router
Исправление ошибки при автоматическом внедрении параметров типа ArrayList<T extends Parcelable>
Поддержка внедрения массивов данных из Uri
Автоматическое внедрение теперь поддерживает SparseArray<? extends Parcelable>
В класс ParameterSupport
добавлен метод getSparseParcelableArray
Config
для конфигурирования. Способ инициализации изменился. Component.init(boolean, Config);
- В конфигурациях добавлен метод `tipWhenUseApplication(boolean)` для напоминания пользователям использовать `Application` в качестве контекста, значение по умолчанию — `true`.
- В конфигурации добавлен метод `useRouteRepeatCheckInterceptor(boolean)` для управления использованием встроенных антидроповых проверок повторных переходов, значение по умолчанию — `true`.
- Класс `Config` реализует паттерн "строитель", что позволяет лучше организовать несколько конфигураций и обеспечивает хорошую расширяемость для будущих конфигураций.
Метод Router.with(Context).withProxyBundle
переименован в Router.with(Context).proxyBundle
.
Пакеты OnRouterCancel
и OnRouterError
переименованы в com.xiaojinzi.component.support
.
Класс com.xiaojinzi.component.condition.Condition
переименован в com.xiaojinzi.component.support.Condition
.
Класс com.xiaojinzi.component.bean.CustomerIntentCall
переименован в com.xiaojinzi.component.support.CustomerIntentCall
.
Улучшены возможности внедрения свойств и сервисов. Цель — сделать более явной логику внедрения значений свойств и сервисов, а также предоставить пользователю возможность выбора между объединением и разделением этих функций.
Component.inject(Object)
остается прежней.Component.injectFromIntent(Object, Intent)
переименован в injectAttrValueFromIntent(Object, Intent)
, внутри которого удалено внедрение сервисов. - Метод Component.injectFromBundle(Object, Intent)
переименован в injectAttrValueFromBundle(Object, Intent)
, внутри которого удалено внедрение сервисов.Component.injectService(Object)
для внедрения сервисов.Аннотация @FieldValueAutowiredAnno
переименована в @AttrValueAutowiredAnno
. Несовместимое обновление.
Обновлены несколько библиотек до последних версий.
Для удовлетворения некоторых сценариев, требующих получения Intent
заранее, была специально реализована функция создания прокси Intent
. Подробнее здесь.
Исправлена проблема путаницы requestCode
при получении ActivityResult
через Router
и при указании только requestCode
в Router
.
Исправлена правильная запись аннотации FieldAutowiredAnno
, ранее она была названа как FiledAutowiredAnno
.
Исправлен баг плагина Gradle при копировании jar
.### Версия 1.7.7.2 (оптимизация) — планируется удаление свойства singleTon
в аннотации FragmentAnno
. Учитывая, что обычно при использовании Fragment
создается новый экземпляр.
Фреймворк никогда не будет вызывать метод requestCodeRandom()
автоматически. Несколько человек обратили внимание, что когда они запрашивают ActivityResult
, можно было бы просто генерировать случайный requestCode
с помощью метода requestCodeRandom()
. Однако это не рекомендовано. Ниже приведены мои объяснения.
ActivityResult
связан с процессом, который начинается от метода startActivityForResult()
и заканчивается методом onActivityResult
.requestCode
. Но я хочу, чтобы пользователи понимали, что это все еще является частью метода startActivityForResult()
, требующего наличия requestCode
.requestCodeRandom()
представляет собой удобство, но его нельзя игнорировать, поскольку я хочу, чтобы пользователи осознавали необходимость использования requestCode
.requestCodeRandom()
. Это стоит помнить всем пользователям.При использовании Application
для перехода, добавлены логи, предупреждающие пользователя о том, что используется Application
, а также о том, что использование этого объекта не рекомендуется.
Component.````markdown closeLogWhenUsingApplication();
для отключения предупреждающих сообщений.Оптимизация внутреннего кода получения объекта Service
в методе ServiceManager.get(Class)
. Объекты, созданные пользователем, должны создаваться в главном потоке, согласно начальному дизайну (все взаимодействие пользователя должно происходить в главном потоке).
Оптимизация возможной проблемы инициализации интерцептора в других потоках.
Все внутренние методы были добавлены аннотациям потока, указывающим диапазон потока для каждого метода.
Добавлено глобальное уникальное имя для Fragment
. Когда есть несколько фрагментов с одинаковым именем, вызов Component.check()
при старте выведет ошибку, помогая найти проблему повторяющихся имен.
- Устранены ошибки в корректировке (оптимизация следующих проблем):
- При получении целевого экрана `ActivityResult`, если произошла ошибка в методах до или после, сообщение об ошибке не выводится.#### v1.7.7
- В конфигурационном классе компонента `Component` добавлена возможность `optimizeInit(boolean)`, которая по умолчанию равна `false`. Если установить значение `true`, то инициализация будет выполнена с использованием технологии ASM, в противном случае — через рефлексию.
- На практике производительность обоих вариантов практически одинакова. Поэтому, если вы не занимаетесь экстремальным оптимизированием, я рекомендую использовать рефлексию.
- `Gradle Plugin`
- В предыдущей версии был добавлен плагин `Gradle Plugin`, предназначенный для ускорения запуска приложения. Подробнее см. [issue](https://github.com/xiaojinzi123/Component/issues/26).
- По умолчанию компонент использует рефлексию для инициализации, но время инициализации с оптимизацией и без неё отличается всего на несколько миллисекунд. Поэтому использование этого плагина не рекомендуется.
- Конечно, использование `Gradle`-плагина может привести к некоторым неизвестным рискам. Если возникнут какие-либо проблемы, немедленно отключите этот плагин для диагностики.
- Если проблема вызвана этим плагином, пожалуйста, отключите его. Это не повлияет на ваш код. Если возможно, отправьте мне информацию о проблеме. Спасибо.
- `Idea Plugin` исправлено отображение значков для `RxRouter`.
- `Idea Plugin` больше не поддерживает `AS3.4`, минимальная поддерживаемая версия — `AS3.5`.#### v1.7.6.2
- Все методы `navigate` теперь имеют аннотацию `@CheckResult`, что указывает пользователям на наличие возвращаемых данных. Если вам не нужен возврат значения, вы можете использовать соответствующий метод `forward`.
#### v1.7.6.1
- Добавлен полный набор методов `forward`, которые не возвращают объект типа `NavigationDisposable`.#### v1.7.6
- Добавлена функциональность "роутинга" `Fragment` (это просто более простой способ получения `Fragment`).
- Любой `Fragment` можно пометить аннотацией `@FragmentAnno`.
- Для использования см. раздел "Роутинг" в `wiki`: [Переход Fragment](https://github.com/)Рейс-Сопоставление-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-Соответствие-- Исправлено опечатание в методе `onDestory` интерфейса `IComponentApplication`, правильное название — `onDestroy`.
- Добавлена возможность использования `afterEventAction` как обратного вызова после успешной или неудачной переадресации; выброс исключений недопустим, что может привести к аварийному завершению работы приложения.
- Добавлена возможность использования `afterErrorAction` как обратного вызова после неудачной переадресации; выброс исключений недопустим, что может привести к аварийному завершению работы приложения.
- Изменено представление ошибочного лога для повторных запросов одного маршрута за одну секунду.
- Переработана последовательность выполнения нескольких пользовательских действий (`Action`).
- В API маршрутов добавлены аннотации `AfterErrorActionAnno` и `AfterEventActionAnno`.#### v1.7.4
- Метод `Router.with()` теперь поддерживает пустые аргументы, что по умолчанию использует `Application` в качестве контекста. Разработчик рекомендует использовать этот метод только тогда, когда нет доступного контекста `Activity`. При наличии контекста `Activity` разработчик советует передавать его.
#### v1.7.3.2
- Расширенная версия API маршрутов теперь поддерживает возврат `Observable` с использованием `RxJava`, а также поддерживаются типы `Single` и `Completable`.
#### v1.7.3.1
- Устранены проблемы с автоматическим внедрением компонентов типа `Fragment`.
- Класс `ComponentConfig` переименован в `Component`.
- В исходном коде добавлен пример запуска отдельного модуля `Module1` через новый модуль `Module1Run`.
#### v1.7.3.0
- Поддерживается внедрение свойств с помощью аннотации `@FieldAutowiredAnno`.
- Поддерживается внедрение сервисов с помощью аннотации `@ServiceAutowireAnno`.
- Используется метод `Component.inject(this)` для внедрения свойств и сервисов.
#### v1.7.2.3
- Поддерживается создание пользовательского класса жизненного цикла для каждого бизнес-модуля, если это требуется. Это позволяет пользователям уменьшить количество конфигураций.
#### v1.7.2.2
- Добавлена возможность указывать свойство `hostAndPath` в аннотации `@RouterAnno`.
#### v1.7.2.1
- Репозиторий изменён на `jitpack`, более стабильный источник зависимостей.
#### v1.7.2
- Поддерживается использование `Activity Options` в API маршрутов, параметры можно пометить аннотацией `@OptionsAnno`.#### v1.7.1
- Улучшена поддержка использования API маршрутов.
- Удалена возможность создания пользовательской функции для возвращаемого значения `void` при переходах.
- Добавлена поддержка параметров `flag` и `category` при переходах.
#### v1.7.0
- Отменена поддержка возможности пользователей определять параметры при переходах.
- Поддерживается полное внедрение всех свойств в компоненты интерфейсов, что возможно благодаря методу `Component.inject(this)`.
#### v1.6.1
- Устранена проблема с неподдерживаемым `requestCode`.
#### v1.6.0
- Добавлена поддержка маршрутизируемых интерфейсов типа `Api`, аналогично `Retrofit`. Подробнее см. примеры в исходном коде. Поиск всех классов, помеченных аннотацией `@RouterApiAnno`.
#### Версии до v1.6.0
Детали версий ранее v1.6.0 уже не отслеживаются. В каждом последующем обновлении будет подробно указано содержание изменений.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )