Создание обработчика обратного вызова для обработки нескольких обратных вызовов в Android

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

Сторонняя библиотека, благодаря ее дизайну, только делает один обратный вызов для приложения. Однако у моего приложения есть несколько различных асинхронных задач, которые он хотел бы сделать, когда вызывается callback (например, ведение журнала, обновление дисплея пользовательского интерфейса, вызов внешних программ). Попытка развернуть мероприятие, в некотором смысле, разными способами. Итак, я думаю об этом в своем классе Application:

interface MyCallback { public void doSomething(ArrayList<DataClass>); } public class MyApp extends Application { ... private MyCallback cb; public void registerCallback (MyCallback callback) { cb = callback; } public methodCalledBy3rdPartyAPIOnData (ArrayList<DataClass> data){ cb.doSomething(ArrayList<DataClass> data); } 

Который будет работать для одного метода для вызова, но у меня возникла проблема с тем, как это сделать для серии обратных вызовов … и убедитесь, что они вызываются асинхронно. Есть ли какие-либо примеры или лучшие практики для такого рода вещей в приложении для Android или в Java вообще?

Я бы использовал слегка адаптированный шаблон наблюдателя (адаптация уведомляет каждого наблюдателя в новом потоке):

Ваш обработчик обратного вызова является субъектом (т. Е. Соблюдается):

 public class Subject { private List<Observer> observers = new ArrayList<>(); public void registerObserver(Observer observer) { observers.add(observer); } public void notifyObservers(Object data) { for (final Observer observer : observers) { new Thread(new Runnable() { @override public void run() { observer.notify(data); } }).start(); } } public methodCalledBy3rdPartyAPIOnData (ArrayList<DataClass> data){ notifyObservers((Object)data); } } 

И каждый из реальных обработчиков должен реализовать следующий интерфейс

 public interface Observer { public void notify(Object data); } 

И зарегистрируйте себя, вызвав subject.registerObserver(this) .

Intereting Posts
Библиотека поддержки проектирования V22 – Нет источников? С помощью тега кнопки можно настроить кнопку? Как я могу поместить фрагмент из backstack, не возобновив его? Android – Вращение ImageView с пальцем перемещает другие виды вокруг Как программно определить, какой формат XML используют мои приложения для Android? Как совместить int с перечислением Управление частотой обновления дисплея на устройстве Android Инфраструктура приложений Firebase и конфиденциальные данные Почему libcore.io.ErrnoException: kill failed: ESRCH (нет такого процесса) в android? Недействительный метод AlertDialogCancelable (false) Не удалось разрешить значение цвета Android добавляет MMS в базу данных Как создать настраиваемую панель выполнения Circle на Android В android 4.4, прокручивание приложения из последних задач постоянно убивает приложение своим сервисом. Любая идея почему? Открыть образцы CV для загрузки OpenCV Manager