Android Замените механизм обработки событий Greenrobot на Livedata и ViewModel

avatar
Rajeev
9 августа 2021 в 05:56
55
0
0

В моем текущем проекте я использую Eventing от Green Robot для извлечения данных из локальной базы данных и обновления пользовательского интерфейса. У меня есть интерфейс ниже.

public interface Eventing {
    void post(
            @NonNull final Event event);

    void register(
            @NonNull final Object subscriber);

    void unregister(
            @NonNull final Object subscriber);
}

Класс событий : который расширяется за счет различных классов запросов и ответов

public abstract class Event {

    public static final int NO_REFERENCE_ID = -1;
    private static int eventIdCounter = 0;

    private final int eventId;
    private final int referenceId;

    public Event() {
        this(NO_REFERENCE_ID);
    }

    public Event(final int referenceId) {
        this.eventId = ++eventIdCounter;
        this.referenceId = referenceId;
    }

    public int getEventId() {
        return eventId;
    }

    public int getReferenceId() {
        return referenceId;
    }
}

Поток следующий.

  1. Отправить событие Request с помощью eventing.post("запрос") во фрагменте/активности
  2. Существует EventingMonitor, который получает запрос, а затем отправляет response обратно в пользовательский интерфейс (после получения данных из локальной БД с использованием для этой цели ormLite)
  3. Ответ получен в пользовательском интерфейсе, а затем я обновляю его в соответствии с данными.

Я хочу заменить Eventing на Android LiveData и ViewModel. Я не уверен, как создать универсальный класс, который возвращает Livedata разных ответов. Кроме того, я не совсем уверен, как сделать запрос, поскольку мой ViewModel должен отвечать за выполнение запроса database и обновление Livedata.

Может ли кто-нибудь помочь мне немного, чтобы я мог двигаться в правильном направлении?

Источник

Ответы (0)