使用RxJava处理回调

时间:2016-02-22 10:50:08

标签: android rx-java

我试图了解使用RxJava处理特定案例的最佳方法是什么。

我需要返回Observable来处理从Android AccountManager删除帐户的问题。不幸的是,这个动作是异步的,它需要一个回调来处理结果。

因此,我以这种方式使用Observable.create方法:

return Observable.create(subscriber -> {
        final Account account = getAccountIfExist();
        if (account == null) {
            subscriber.onError(new NoUserFoundException());
            return;
        }

        accountManager.removeAccount(account, future -> {
            boolean result = false;
            try {
                result = future.getResult();
            } catch (Exception ex) {
                Log.e(TAG, "Remove account not successful : ", ex);
                subscriber.onError(ex);
                return;
            }

            if (result) {
                subscriber.onNext(account.name);
                subscriber.onCompleted();
            } else {
                subscriber.onError(new RuntimeException("Cannot remove the account."));
            }
        }, null);
    });

但是,Observable.create在处理背压和取消方面存在不同的问题,如post

所述

所以,问题是,如何使用Observable.fromCallable(或等效方法)来处理回调(一般情况下)以及处理背压和取消?

0 个答案:

没有答案