3 回答

TA贡献1830条经验 获得超9个赞
在您提到的用例中,实际上没有重大区别。
现在想象一下我们需要通过函数调用动态创建对象吗?
fun getTimeObject() {
val timeInMillis = System.currentTimeMillis()
return TimeObject(timeInMillis)
}
然后,当它有一个新订阅者时,Single.just(getTimeObject())结果Single将发出相同的信息Long。
然而,当它有一个新订阅者时Single.fromcallable(()-> getTimeObject()),结果Single将发出一个不同的Long指示以毫秒为单位的当前时间。
那是因为fromCallable每当它有一个新订阅者Lazily 时,它就会执行它的 lambda 。

TA贡献1784条经验 获得超8个赞
当你有一个类似的函数时,你应该使用fromCallable()
MyObject myFunction() {
// some login here
return new MyObject();
}
然后你可以像这样从这个函数创建Single:
Single.fromCallable(() -> myFunction());
Single.just(myObject)只是在没有任何逻辑的情况下发出您的对象。
因此,当您想要发出特定项目时,无需使用fromCallable()。
添加回答
举报