android - "Subject.asObservable()"和主题本身 "Subject"之间有什么区别吗?

标签 android rx-java kotlin

如果 Subject 继承自 Observable,那么基于任何 Subject 的下一个选项有什么区别,例如:

private val locationSubject: ReplaySubject<Location> = ReplaySubject.create<Location>()

1.subject 本身作为 Observable 返回

fun getLocations(): Observable<Location> = locationSubject

2. 返回 subject.asObservable()

fun getLocations(): Observable<Location> = locationSubject.asObservable()

最佳答案

如果您查看 .asObservable 的实现,您会发现它通过一个什么都不做的运算符提升了 observable。这实际上只是将您的主题包装在一个可观察对象中,这使得使用代码无法将其转换回主题。

asObservable 是一种防御机制,用于隐藏实现细节,仅此而已。

关于android - "Subject.asObservable()"和主题本身 "Subject"之间有什么区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43875168/

相关文章:

android - 如何找出哪个Android APP正在使用content provider来监控系统数据?

android - 如何在改造中修复 IOException

java - 如何同时调用所有 `Mono<E>`

android - 过滤 rx.Observable 响应到两个不同的订阅者

android - 在房间数据库中调用 'insert' 未完成事务

android - 在 Android 应用程序中渲染/转换 PDF

android - 在 Motorola XOOM view.startAnimation 上导致 MediaPlayer 停止

multithreading - RxJava和多线程变量

kotlin - Kotlin 插件之间的区别

kotlin - 如何在 Kotlin 中将 CharArray 转换为 Array<Char>