Я пытаюсь использовать QuickbloxAndroid SDK в сочетании с RxJava, чтобы сделать некоторые прикованные и зависящие от времени вызовы API Quickblox. В API уже есть async методов. Вот два из них:Использование RxJava для запросов Quickblox API
Создать сессию:
QBAuth.createSession(new QBEntityCallbackImpl<QBSession>() {
@Override
public void onSuccess(QBSession session, Bundle params) {
}
@Override
public void onError(List<String> errors) {
}
});
создать диалог (чат номер)
QBChatService.getInstance().getGroupChatManager().createDialog(qbDialog,
new QBEntityCallbackImpl<QBDialog>() {
@Override
public void onSuccess(QBDialog dialog, Bundle args) {
}
@Override
public void onError(List<String> errors) {
}
});
Как вы видели, каждый вызов API должен иметь Реализация обратного вызова как параметр метода. Проблема в том, что я должен совершать некоторые связанные вызовы API. Пример:
- Создать пустой сеанс, затем
- Войти, затем
- Получить данные пользователя, затем
- Вход в чат службу, а затем
- ....
Я немного искал RxJava, и я видел, что хорошо решить эту проблему, потому что вы можете применить некоторые фильтры и другие вещи, прежде чем совершать следующий вызов API. Проблема в том, что я не знаю, как адаптировать этот API для работы с RxJava.
Если API вызова с обратными вызовами быть внутри метода
Observable
call()
?Если
onError()
иonSuccess()
методы API Quickblox называютonError()
и методыSubscriber
вonNext()
/onCompleted()
?
Может кто-нибудь сделать несколько примеров использования RxJava для создания сеанса, а затем создать диалог, используя при условии создать сеанс и создавать диалоговые методы API?
Спасибо @ Android777! В этом случае, если я хочу связать вызовы, следует ли комбинировать наблюдаемые с помощью flatMap? – regmoraes
@regmoraes да, что-то вроде этого: 'connectionObservable.flatMap ((Func1>) qbSession -> dialogCreationObservable);' –
AndroidEx