0
我不知道我是正确的措辞措辞,这是我在做什么:下载图像(如果需要)应用一些效果(模糊),并将其设置为设备壁纸:RxJava构成了可观察的基础上的条件里面emmited项目
data class SetWallpaperIntent(val bitmap : Bitmap?, val url : String)
setWallpaperObservable.switchMap { setWallpaperIntent ->
if (setWallpaperIntent.bitmap == null) {
downloader.DownloadWallpaper(setWallpaperIntent.url)
.flatMap {
if (it is Result.Download.Success) {
Observable.just(setWallpaperIntent.copy(bitmap = it.bitmap))
.compose(::blurWallpaper)
.compose(::setWallpaper)
.startWith(Observable.just(it))
} else {
//Result.Download.Progress/Result.Download.Error events
Observable.just(it)
}
}
} else {
Observable.just(it)
.compose(::blurWallpaper)
.compose(::setWallpaper)
}
}
此代码按预期工作,但也有几件事情我不会这种方法,如:
- 我不停地重复码
.compose(::blurWallpaper).compose(::setWallpaper)
- 我创造了很多单项观察
Observable.just(it)
,
所以,我的问题是...有没有更好的方法来实现我想要做的事情。或者我的方法是正确的?
顺便说一句,我也使用.publish()
运营商认为,该代码不会提高太多
我想在创建一个返回下载图像的'Observable'后,基本上就完成了。我会这样做:'downloadWallpapaer(url).map(img - > blurWallpaper(img))。subscribe(img - > setWallpaper(img))''。 – GVillani82
是的,但有时我已经有位图,再次下载它将浪费资源 – feresr
好吧,然后你添加一个抽象:'getWallpaper(url)'(代替'downloadWallpaper')返回'downloadWallpapaer url)'或'Observable.just(preexistingImage)' – GVillani82