RxJava 和不受监控的下载
Posted
技术标签:
【中文标题】RxJava 和不受监控的下载【英文标题】:RxJava and unmonitored download 【发布时间】:2015-06-26 10:56:52 【问题描述】:我将如何在 RxJava 中处理这个问题(我只是很难学习这个库)。
我有我想要在我的 android 应用程序开始时下载的 URL,我希望它启动,即使没有人订阅它。下载可能需要一定的时间,因此用户最终可能会访问依赖于该 url 下载的页面,因此我希望 Activity/Fragment 订阅该未完成的 Observable。
我打算用一个简单的方法来跟踪优秀的 Observable
Map<String, Observable>
所以观察者(活动/片段)可以知道它的 url/字符串是否不在地图中,那么他们的东西已经完成了。我正在考虑使用 PublishSubject,但根据一次谈话,我听说他们建议不要使用 Subject's,因为你应该先学会使用 Observable,然后再使用“快捷方式”。
【问题讨论】:
【参考方案1】:我会用PublishSubject
来解决这个问题。
PublishSubject<DownloadResult> download = PublishSubject.create();
当您的应用启动时,您开始下载,使用带有.subscribeOn(Schedulers.io)
的经典 RxJava 例程。当下载结束时,您将结果推送到PublishSubject
:
download.onNext(downloadResult);
download.onCompleted();
您的活动/片段Observer
s 将订阅PublishSubject
并在下载完成时收到通知。小菜一碟;-)
【讨论】:
以上是关于RxJava 和不受监控的下载的主要内容,如果未能解决你的问题,请参考以下文章