Android rxjava2 комната получить вставленный идентификатор объекта, чтобы использовать его следующий запрос - PullRequest
0 голосов
/ 25 мая 2018

Мне нужен правильный подход для вставки объекта в комнату и получения rowId через rxjava2.Например: у меня есть объект Body

    long insertBody(Body body);

в viewmodel

    Body body = new Body(contactId, msgText);
    getCompositeDisposable().add(
            Single.fromCallable(() -> getDataSource().insertBody(body))
                    .subscribeOn(getSchedulerProvider().io())
                    .observeOn(getSchedulerProvider().ui())
                    .subscribe(bodyId -> onContinueNewMessage(msgId, conversationId, bodyId,
                            forwardBodyId, replyMsgId, createdTimestamp), Timber::e)
    );

Вопрос в том, что если я напишу объект body и получу его rowId в нескольких местах?Мне нужен метод, который вставляет тело через rxjava и возвращает как Single ... Заранее спасибо!

1 Ответ

0 голосов
/ 25 мая 2018

Вы можете объединить код, который есть внутри add(), в методы.

Например:

public class Example {
    public static Single<Integer> insertBodySingle(Body body, DataSource dataSource) {
        return Single.fromCallable(() -> dataSource.insertBody(body));
    }

    public static Single<Integer> insertBodySingleThreaded(Body body, DataSource dataSource) {
        return insertBodySingle(body, dataSource)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread());
    }
}

Затем вы можете использовать их следующим образом:

Example.insertBodySingle(body, dataSource).subscribe(bodyId -> )
...