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

OSCHINA-MIRROR/mirrors-hermeseventbus

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

HermesEventBus

HermesEventBus — это библиотека, основанная на EventBus, которая позволяет отправлять и получать события между процессами. Она особенно полезна для IPC (Inter-Process Communication) или разработки плагинов. Библиотека использует EventBus в качестве основы и имеет аналогичный API.

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

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

Примечание: данная библиотека основана на EventBus 3.0.0. Если вы ранее использовали более старую версию, вам потребуется изменить ваш код, чтобы он работал с новой версией. Однако изменения достаточно просты.

Ранее использовавшиеся методы с названиями вида "onEventXXX" должны быть аннотированы и дополнены указанием режима потока:

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

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

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

Передача событий осуществляется с помощью EventBus, а IPC-коммуникация — с помощью Hermes. Hermes — это простая и удобная библиотека для IPC в Android.

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

  1. Использование библиотеки Hermes для передачи события в основной процесс.
  2. Основной процесс использует EventBus для отправки события внутри основного процесса.
  3. Основной процесс использует библиотеку Hermes для передачи события во все дочерние процессы.
  4. Каждый дочерний процесс использует EventBus для отправки события внутри дочернего процесса.

Кроме того, используется библиотека Concurrent-Utils.

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

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

Использование внутри одного приложения

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

Шаг 1

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

dependencies {
    implementation '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

Добавьте следующий код для инициализации в методе onCreate класса Application:

HermesEventBus.getDefault().init(this);

Шаг 3

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

HermesEventBus.getDefault().register(this);
```HermesEventBus.getDefault().post(new Event());

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

Шаг 4

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

HermesEventBus.getDefault().destroy();

Иначе вы получите исключение android.os.DeadObjectException и другие исключения. Эти исключения выводят информацию об ошибке, но не приводят к падению приложения.

Использование между несколькими приложениями (например, при использовании DroidPlugin)

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

Шаг 1

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

dependencies {
    implementation '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

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

При использовании DroidPlugin вы можете выбрать основное приложение как хост-приложение.

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

<service android:name="xiaofei.library.hermes.HermesService$HermesService0"/>
```Вы можете добавить дополнительные атрибуты.

### Шаг 3

Классы событий, которые отправляются и принимаются между приложениями, должны иметь одинаковое имя пакета, одинаковое имя класса и одинаковые методы.

Не забудьте сохранить эти классы при кодировании!

### Шаг 4

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

```java
HermesEventBus.getDefault().init(this);

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

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

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

Шаг 5

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

HermesEventBus.getDefault().register(this);

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

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

Шаг 6

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

HermesEventBus.getDefault().destroy();

Иначе вы получите исключение android.os.DeadObjectException и другие исключения. Эти исключения выводят информацию об ошибке, но не приводят к падению приложения.

Ссылки

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

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

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

Лицензия

Авторское право (C) 2016 Xiaofei, ele.me

Бинарные файлы и исходный код Apache License, Version 2.0 могут быть использованы в соответствии с лицензией 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