【发布时间】:2020-03-09 22:01:17
【问题描述】:
我有这段代码,当我使用 map 进行转换时,您可以看到 currentThread 是后台线程,而我使用 compose() 它位于主线程中。 为什么它会以这种方式工作,而我找不到有关此的文档。
public Single<Content> fetchContent() {
return mEndpoint.content(id);
}
public Single<Content> fetchContent() {
return mEndpoint.fetchContent()
.map(content -> {
Log.i("thread-name", "map" + Thread.currentThread());
return content;
})
.compose(content -> {
Log.i("thread-name", "compose" + Thread.currentThread());
return content;
});
}
//thread-name: compose. Thread[main,5,main]
//thread-name: map. Thread[OkHttp ...,10,main]
【问题讨论】:
-
compose函数在创建时被调用/评估,而不是订阅,因此它在主线程上被调用,以及为什么它会立即记录。 -
感谢您的回答。我不确定我是否理解答案。
-
是否可以在撰写和后台线程中进行转换?
标签: android rx-java2 rx-android