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.
Библиотека выбирает один процесс в качестве основного, а остальные — в качестве дочерних.Каждый раз, когда событие отправляется, оно проходит через следующие четыре шага:
Кроме того, используется библиотека Concurrent-Utils.
Данная библиотека позволяет отправлять и получать события между процессами внутри одного приложения или между разными приложениями.
Если вы разрабатываете приложение с несколькими процессами, вам потребуется выполнить следующие три шага:
Добавьте следующую зависимость в файл 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>
Добавьте следующий код для инициализации в методе onCreate
класса Application
:
HermesEventBus.getDefault().init(this);
Каждый раз, когда вы используете EventBus, замените его на HermesEventBus.
HermesEventBus.getDefault().register(this);
```HermesEventBus.getDefault().post(new Event());
HermesEventBus также может передавать события между процессами, поэтому если вы уже используете HermesEventBus, больше не нужно использовать EventBus.
Если процесс больше не отправляет и не получает события, он должен вызвать:
HermesEventBus.getDefault().destroy();
Иначе вы получите исключение android.os.DeadObjectException
и другие исключения. Эти исключения выводят информацию об ошибке, но не приводят к падению приложения.
Если вы хотите отправлять и получать события между несколькими приложениями, выполните следующие шаги:
Добавьте зависимость в файл 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>
Выберите одно приложение в качестве основного приложения. Вы можете выбрать любое приложение, но лучше выбрать то, которое будет работать дольше всего.
При использовании 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
— это имя пакета основного приложения.
Каждый раз, когда вы используете EventBus, замените его на HermesEventBus.
HermesEventBus.getDefault().register(this);
HermesEventBus.getDefault().post(new Event());
HermesEventBus также может передавать события между процессами, поэтому если вы уже используете HermesEventBus, больше не нужно использовать EventBus.
Если процесс больше не требует отправки и получения событий, то этот процесс должен вызвать:
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 )