1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-hermeseventbus

Клонировать/Скачать
README.md 10 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 06.06.2025 01:47 ffe846a

HermesEventBus

HermesEventBus — это библиотека для использования EventBus между процессами, полезная в IPC или разработке плагинов. Она предоставляет те же API, что и EventBus, и легко используется.

Chinese Readme 中文文档

EventBus — одна из самых широко используемых библиотек, упрощающая коммуникацию между различными компонентами в Android. Однако она не поддерживает отправку событий между процессами.

Поэтому HermesEventBus создан для поддержки отправки событий между процессами.

Обратите внимание, что HermesEventBus основан на EventBus 3.0.0, и если вы используете более раннюю версию, вам следует изменить ваш код. В противном случае вы не будете получать никаких событий!!!

Нет смысла называть метод, принимающий события, "onEventXXX". Вместо этого вы должны добавить аннотацию @Subscribe к методу:

@Subscribe(threadMode = ThreadMode.MAIN)
public void showText(String text) {
    textView.setText(text);
}

Принцип работы

Эта библиотека основана на двух библиотеках: Hermes и EventBus.

Отправка событий основана на EventBus, а IPC — на Hermes, умной, новаторской и удобной для Android Inter-Process Communication (IPC) библиотеке.

Эта библиотека выбирает один процесс в качестве основного процесса и рассматривает остальные процессы как подпроцессы.

Каждый раз, когда событие отправляется, библиотека выполняет следующие действия:1. Использует библиотеку Hermes для отправки события в основной процесс.

  1. Основной процесс использует EventBus для отправки события внутри основного процесса.

  2. Основной процесс использует библиотеку Hermes для отправки события во все подпроцессы.

  3. Каждый подпроцесс использует EventBus для отправки события внутри себя.

Кроме того, HermesEventBus использует библиотеку Concurrent-Utils для решения тонких проблем, связанных с конкурентностью, вызванных мертвым замком и условиями гонки.

Использование

Эта библиотека может использоваться для отправки событий не только внутри одного приложения, имеющего более одного процесса, но и между различными приложениями.

Внутри одного приложения

Если вам нужно отправлять и получать события только внутри одного приложения, имеющего более одного процесса, выполните следующие три шага:

Шаг 1

Добавьте следующее в ваш файл gradle:

dependencies {
    compile 'xiaofei.library:hermes-eventbus:0.3.0'
}

Для Maven используйте следующее:

<dependency>
  <groupId>xiaofei.library</groupId>
  <artifactId>hermes-eventbus</artifactId>
  <version>0.3.0</version>
  <type>pom</type>
</dependency>

Шаг 2

В методе Application.onCreate() вашего класса приложения добавьте следующее выражение:

HermesEventBus.getDefault().init(this);

Шаг 3

Каждый раз, когда вы используете EventBus, замените "EventBus" на "HermesEventBus", как показано ниже:``` HermesEventBus.getDefault().register(this);

HermesEventBus.getDefault().post(new Event());


HermesEventBus также может отправлять и получать события внутри одного процесса, поэтому если вы уже используете HermesEventBus, больше не используйте EventBus.

### Шаг 4

Если процесс больше не нуждается в отправке и получении событий, он должен вызвать следующее:

HermesEventBus.getDefault().destroy();


В противном случае вы получите исключение `android.os.DeadObjectException` или другие исключения. Однако эти исключения будут выводить сообщения об исключениях, но не приведут к аварийному завершению приложения.

## Между приложениями

Если вы хотите отправлять и получать события между приложениями, выполните следующие шаги:

### Шаг 1

Добавьте следующее в файл gradle каждого приложения:

dependencies { compile 'xiaofei.library:hermes-eventbus:0.3.0' }


Для Maven используйте следующее:
xiaofei.library hermes-eventbus 0.3.0 pom ```

Шаг 2

Выберите одно приложение в качестве основного. Вы можете выбрать любое приложение в качестве основного, но предпочтительно выбрать долгоживущее.

В файле AndroidManifest.xml основного приложения добавьте следующий сервис:

<service android:name="xiaofei.library.hermes.HermesService$HermesService0"/>

Вы можете также добавить некоторые атрибуты к сервису, если это необходимо.

Шаг 3

События, отправляемые между приложениями, должны иметь одинаковое имя пакета, одинаковое имя класса и одинаковые методы.И не забудьте сохранить все классы событий и методы внутри этих классов в файлах proguard-rules.

Шаг 4

В методе Application.onCreate() класса приложения основного приложения добавьте следующее выражение:

HermesEventBus.getDefault().init(this);

В методе Application.onCreate() класса приложения других приложений добавьте следующее выражение:

HermesEventBus.getDefault().connectApp(this, packageName);

packageName — это имя пакета основного приложения.

Шаг 5

Каждый раз, когда вы используете EventBus, замените "EventBus" на "HermesEventBus", как показано ниже:

HermesEventBus.getDefault().register(this);

HermesEventBus.getDefault().post(new Event());

HermesEventBus также может отправлять и получать события внутри одного процесса, поэтому если вы уже используете HermesEventBus, больше не используйте EventBus.

Шаг 6

Если процесс больше не нуждается в отправке и получении событий, он должен вызвать следующее:

HermesEventBus.getDefault().destroy();

В противном случае вы получите исключение android.os.DeadObjectException или другие исключения. Однако эти исключения будут выводить сообщения об исключениях, но не приведут к аварийному завершению приложения.

Другие проекты с открытым исходным кодом от Xiaofei

GitHub Xiaofei: https://github.com/Xiaofei-it

Hermes — это умная, новая и удобная для использования архитектура для Android Inter-Process Communication (IPC).Shelly — это библиотека для бизнес-ориентированного программирования, предоставляющая новую модель, которая использует цепочку методов для иллюстрации того, как каждый компонент изменяется в зависимости от бизнес-объекта.AndroidDataStorage — это удобная и высокопроизводительная библиотека для хранения данных в системе Android.

ComparatorGenerator — это удобная вспомогательная библиотека для генерации компаратора для определенного класса, полезная при сортировке экземпляров данного класса.

Лицензия

Copyright (C) 2016 Xiaofei, ele.me

Бинарные файлы и исходный код AndroidDataStorage могут быть использованы в соответствии с Apache License, Version 2.0.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/mirrors-hermeseventbus.git
git@api.gitlife.ru:oschina-mirror/mirrors-hermeseventbus.git
oschina-mirror
mirrors-hermeseventbus
mirrors-hermeseventbus
master