1
默認情況下Completable
不熱。但我有情況下熱Completable將是非常有用:大文件下載和緩存設置:可長時間運行的任務熱完成
class DownloadManager {
Completable downloadAndCacheA();
Completable downloadAndCacheB();
}
Completable.merge(
downloadManager.downloadAndCacheA(),
downloadManager.downloadAndCacheB()
).subscribe();
當文件比較大的用戶可以離開應用程序和回頭。因此,客戶端代碼可以退訂這些補充表並再次訂閱。一個文件可以下載,但另一個文件仍在進行中。但由於Completable
不熱,下載重新開始。
可能的選項是:
- 讓hot Completable。
- 使用hot Observable返回
Object
。 - 只使用
Thread
實例與自定義Completable
互相交互。
因爲不同的原因,不太喜歡所有這些解決方案。是否有更好的方法來支持長時間運行的可完成任務?
你有沒有看[Completable.cache(http://reactivex.io/RxJava/2.x/javadoc/io/reactivex/Completable.html#cache())和[CompletableSubject](HTTP ://reactivex.io/RxJava/2.x/javadoc/io/reactivex/subjects/CompletableSubject.html)。 – akarnokd
@akarnokd謝謝!嘗試緩存但可能以不同的方式。將再次查看緩存和CompletableSubject。 – eleven