【发布时间】:2018-04-21 19:17:11
【问题描述】:
我的目标是连接completable1 和completable2[0]。在doOnComplete() 之后,我使用mContent 创建缩略图。我尝试了上面的代码,但它不起作用。
Completable completable1;
final Completable[] completable2 = new Completable[1];
completable1 = AppManagers.getContentManager()
.completeCopy(mContent)
.toCompletable()
.doOnComplete(() -> {
File file = new
File(ImageUtils.getThumbNailPathsForLocalContent(mContent.getId(), 0));
if (!file.exists()) {
final ContentVideoCache videoCache =
AppManagers.getAppContext().getVideoCache();
Uri dataURI = videoCache.getDataURI(mContent);
completable2[0] = AppManagers.getContentManager()
.createThumbnails(mContent.getId(), dataURI)
.toCompletable();
}
});
completable = completable1.concatWith(completable2[0]);
更新:如果completeCopy(mContent)返回mContent的不同对象
Completable completable = AppManagers.getContentManager()
.copyIntoShell((Content) selectedContent, mContent)
.flatMapCompletable(new Function<Content, CompletableSource>() {
@io.reactivex.annotations.NonNull
@Override
public CompletableSource apply(@io.reactivex.annotations.NonNull Content content) throws Exception {
return generateThumbnailsForNewContent(content);
}
});
在这之后如果我subscribe 到completable,那会在return generateThumbnailsForNewContent(content); 完成之后完成吧?
private Completable generateThumbnailsForNewContent(Content mContent) {
File file = new File(ImageUtils.getThumbNailPathsForLocalContent(mContent.getId(), 0));
if (!file.exists()) {
final ContentVideoCache videoCache = AppManagers.getAppContext().getVideoCache();
Uri dataURI = videoCache.getDataURI(mContent);
return AppManagers.getContentManager().createThumbnails(mContent.getId(), dataURI).toCompletable();
}
return Completable.error(new FileNotFoundException());
}
【问题讨论】: