Java 具有长时间运行任务的热可完成性
默认情况下,Java 具有长时间运行任务的热可完成性,java,android,rx-java,rx-java2,Java,Android,Rx Java,Rx Java2,默认情况下,Completable不是热的。但我有这样一个例子,即热完全表非常有用:下载和缓存一组大文件: class DownloadManager { Completable downloadAndCacheA(); Completable downloadAndCacheB(); } Completable.merge( downloadManager.downloadAndCacheA(), downloadManager.downloadAndCacheB() ).s
Completable
不是热的。但我有这样一个例子,即热完全表非常有用:下载和缓存一组大文件:
class DownloadManager {
Completable downloadAndCacheA();
Completable downloadAndCacheB();
}
Completable.merge(
downloadManager.downloadAndCacheA(),
downloadManager.downloadAndCacheB()
).subscribe();
当文件较大时,用户可以离开应用程序并返回。因此,客户端代码可以从这些完整表中取消订阅并再次订阅。一个文件可以下载,但另一个仍在进行中。但由于<代码>可完成不是热下载,因此再次开始下载
可能的选择是:
- 制造
- 使用返回
对象的hot Observable
- 只需将
实例与相互交互的自定义线程
一起使用即可可完成的
public Completable downloadAndCache() {
if (completable == null) {
completable = Completable.fromAction(this::syncDownloadAndCache)
.cache();
}
return completable;
}
你看过了吗?@akarnokd谢谢!尝试缓存,但可能以不同的方式。将再次查看缓存和CompletableSubject。