3
我想了解什麼是使用RxJava處理特定情況的最佳方法。使用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
(或等效的方法)來處理回調(一般情況下)以及處理背壓和取消?