[英]Hot Completable with long running tasks
默認情況下Completable
不熱。 但是我有一些情況,熱 Completable 會非常有用:下載和緩存一組大文件:
class DownloadManager {
Completable downloadAndCacheA();
Completable downloadAndCacheB();
}
Completable.merge(
downloadManager.downloadAndCacheA(),
downloadManager.downloadAndCacheB()
).subscribe();
當文件很大時,用戶可以離開應用程序並返回。 所以客戶端代碼可以取消訂閱這些可完成的並再次訂閱。 可以下載一個文件,但另一個文件仍在進行中。 但由於Completable
不是熱下載再次開始。
可能的選擇是:
Object
熱 Observable 。Thread
實例與自定義Completable
相互交互。由於不同的原因,並不真正喜歡所有這些解決方案。 有沒有更好的方法來支持長時間運行的可完成任務?
使用高速緩存,通過akarnokd建議,可能是最簡單的方法。
public Completable downloadAndCache() {
if (completable == null) {
completable = Completable.fromAction(this::syncDownloadAndCache)
.cache();
}
return completable;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.