4
我有這個代碼來包裝在Rx Java 1中的回調,它編譯得很好,但現在我已經切換到RX Java 2,它不能編譯... Rx Java 2中的等價物是什麼?Rx Java 2:如何包裝回調?
return Observable.fromEmitter(new Action1<AsyncEmitter<Integer>>() {
@Override
public void call(AsyncEmitter<Integer> emitter) {
transObs.setTransferListener(new TransferListener() {
@Override
public void onStateChanged(int id, TransferState state) {
if (state == TransferState.COMPLETED)
emitter.onCompleted();
}
@Override
public void onProgressChanged(int id, long bytesCurrent, long bytesTotal) {
}
@Override
public void onError(int id, Exception ex) {
emitter.onError(ex);
}
});
emitter.setCancellation(new AsyncEmitter.Cancellable() {
@Override
public void cancel() throws Exception {
transObs.cleanTransferListener();
}
});
}
}, AsyncEmitter.BackpressureMode.BUFFER);
UPDATE:
我想出了這一點,但你有沒有因爲它的OnCreate中的呼叫處理背壓?
return Observable.create(new ObservableOnSubscribe<List<DigitsUser>>() {
@Override
public void subscribe(final ObservableEmitter<List<DigitsUser>> emitter) throws Exception {
mDigitFriends.findFriends((gotEm, users) -> {
emitter.onNext(users);
});
emitter.setCancellable(() -> {
emitter.onNext(null);
});
}
});
什麼喲男子,但沒有編制?你需要更具體一些,什麼是錯誤,你有什麼嘗試等等,至於你的問題,它可能需要是RxJava2中的Emitter()的等價物,答案是create() – yosriz
1)You甚至不要在任何地方調用'emitter.onNext',難怪沒有數據。 2)你離開取消部分。 3)如果你需要一個Observable,使用Observable! – akarnokd
我更新了我的潛在解決方案 – Mike6679