В моем текущем проекте я использую 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;
}
}
Поток следующий.
- Отправить событие
Request
с помощью eventing.post("запрос") во фрагменте/активности - Существует
EventingMonitor
, который получает запрос, а затем отправляетresponse
обратно в пользовательский интерфейс (после получения данных из локальной БД с использованием для этой целиormLite
) - Ответ получен в пользовательском интерфейсе, а затем я обновляю его в соответствии с данными.
Я хочу заменить Eventing
на Android LiveData
и ViewModel
. Я не уверен, как создать универсальный класс, который возвращает Livedata
разных ответов. Кроме того, я не совсем уверен, как сделать запрос, поскольку мой ViewModel
должен отвечать за выполнение запроса database
и обновление Livedata.
Может ли кто-нибудь помочь мне немного, чтобы я мог двигаться в правильном направлении?