RxBus
Шина событий на основе RxJava, оптимизированная для OpenHarmony.
Использование
Решение 1: интеграция локального пакета har
implementation fileTree(dir: 'libs', include: ['.jar', '.har'])
Решение 2:
allprojects{
repositories{
mavenCentral()
}
}
implementation 'io.openharmony.tpc.thirdlib:Anadea_RxBus:1.0.3'
Требования к запуску entry
Через DevEco studio и загрузку OpenHarmonySDK. В файле build.gradle в зависимостях → classpath версии проекта измените версию на соответствующую (то есть версию, используемую в вашем новом проекте IDE).
Инициализация
Рекомендуется получить единственный экземпляр шины через внедрение или другой подходящий механизм. Или получите синглтон следующим образом:
Bus bus = BusProvider.getInstance();
Подписка
Чтобы подписаться на событие, объявите и аннотируйте метод с помощью @Subscribe. Метод должен быть публичным и принимать только один параметр.
@Subscribe
public void onEvent(SomeEvent event) {
// TODO: Do something
}
Также можно создать подписку следующим образом:
CustomSubscriber<SomeEvent> customSubscriber = bus.obtainSubscriber(SomeEvent.class,
new Consumer<SomeEvent>() {
@Override
public void accept(SomeEvent someEvent) throws Exception {
// TODO: Do something
}
})
.withFilter(new Predicate<SomeEvent>() {
@Override
public boolean test(SomeEvent someEvent) throws Exception {
return "Specific message".equals(someEvent.message);
}
})
.withScheduler(Schedulers.trampoline());
Регистрация и отмена регистрации наблюдателя
Для получения событий экземпляру класса необходимо зарегистрироваться в шине.
bus.register(this);
Пользовательскому подписчику также необходимо зарегистрироваться на шине.
bus.registerSubscriber(this, customSubscriber);
Не забудьте также вызвать метод отмены регистрации при необходимости.
bus.unregister(this);
Публикация
Чтобы опубликовать новое событие, вызовите метод post:
bus.post(new SomeEvent("Message"));
Если вы используете ProGuard, добавьте следующие строки в файл конфигурации ProGuard.
-keepattributes *Annotation*
-keepclassmembers class ** {
@com.anadeainc.rxbus.Subscribe public *;
}
Лицензия
Copyright (C) 2017 Anadea Inc
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )