Android 如何使RxJava2可完成并运行?

Android 如何使RxJava2可完成并运行?,android,rx-java2,Android,Rx Java2,在我的Android应用程序中,我想更新部分数据库条目(使用Room),然后在更新完成后从数据库中读取整个条目 在阅读了的文档后,我希望能为我做这项工作。但是下面的代码段只记录“Completable”。“单一”和“来自单一”未被记录 import io.reactivex.Completable; import io.reactivex.CompletableEmitter; import io.reactivex.CompletableOnSubscribe; import io.react

在我的Android应用程序中,我想更新部分数据库条目(使用Room),然后在更新完成后从数据库中读取整个条目

在阅读了的文档后,我希望能为我做这项工作。但是下面的代码段只记录“Completable”。“单一”和“来自单一”未被记录

import io.reactivex.Completable;
import io.reactivex.CompletableEmitter;
import io.reactivex.CompletableOnSubscribe;
import io.reactivex.Single;
import io.reactivex.functions.Consumer;

Completable completable = Completable.create(new CompletableOnSubscribe() {
    @Override
    public void subscribe(CompletableEmitter e) throws Exception {
        Log.e(LOG, "Completable");
    }
});

Single<Long> single = Single.fromCallable(new Callable<Long>() {
    @Override
    public Long call() throws Exception {
        Log.e(LOG, "Single");
        return Long.valueOf(123);
    }
});

completable.andThen(single).subscribe(new Consumer<Long>() {
    @Override
    public void accept(@NonNull Long aLong) throws Exception {
        Log.e(LOG, "From Single: " + aLong.toString());
    }
}, new Consumer<Throwable>() {
    @Override
    public void accept(@NonNull Throwable throwable) throws Exception {
        Log.e(LOG, "Error from Single");
    }
});
import io.reactivex.Completable;
导入io.reactivex.CompletableEmitter;
导入io.reactivex.CompletableOnSubscribe;
导入io.reactivex.Single;
导入io.reactivex.functions.Consumer;
Completable Completable=Completable.create(新建CompletableOnSubscribe()){
@凌驾
public void subscribe(completablee)引发异常{
Log.e(Log,“可完成”);
}
});
Single Single=Single.fromCallable(new Callable(){
@凌驾
public Long call()引发异常{
Log.e(Log,“单”);
长期回报价值(123);
}
});
可完成。第三个(单个)。订阅(新消费者(){
@凌驾
public void accept(@NonNull Long-aLong)引发异常{
Log.e(Log,“From Single:+aLong.toString());
}
},新消费者(){
@凌驾
public void accept(@NonNull Throwable Throwable)引发异常{
Log.e(Log,“单个错误”);
}
});

可完成的
永远不会完成。您需要在发射器上调用
.onComplete()

因此,您的completable将如下所示:

Completable completable = Completable.create(new CompletableOnSubscribe() {
    @Override
    public void subscribe(CompletableEmitter e) throws Exception {
        Log.e(LOG, "Completable");
        e.onComplete();
    }
});

可完成的
永远不会完成。您需要在发射器上调用
.onComplete()

因此,您的completable将如下所示:

Completable completable = Completable.create(new CompletableOnSubscribe() {
    @Override
    public void subscribe(CompletableEmitter e) throws Exception {
        Log.e(LOG, "Completable");
        e.onComplete();
    }
});