我是Rx新手,我一直想知道如何正确地一个接一个地发出值(本例中是延迟加载图像)。在不遇到并发问题的情况下,最好的方法是什么?
这是我的代码:
@Override
public Observable<Bitmap> getPhotos(final String placeId) {
return Observable.create(new ObservableOnSubscribe<Bitmap>() {
@Override
public void subscribe(ObservableEmitter<Bitmap> emitter) throws Exception {
try {
PlacePhotoMetadataResult res = Places.GeoDataApi
.getPlacePhotos(googleApiClient, placeId)
.await();
PlacePhotoMetadataBuffer buffer = res.getPhotoMetadata();
for (PlacePhotoMetadata photoMetadata : buffer) {
Bitmap photo = photoMetadata
.getPhoto(googleApiClient)
.await()
.getBitmap();
emitter.onNext(photo);
}
buffer.release();
} catch (Exception ex) {
emitter.onError(ex);
} finally {
emitter.onComplete();
}
}
});
}
谢谢
您真的应该在桥接Pendingreult上投入一些时间
private static <T> Observable<T> toObservable(PendingResult<T> result) {
//
}
public Observable<Bitmap> getPhotos(final String placeId) {
return Observable
.just(placeId)
.flatMap(id -> toObservable(Places.GeoDataApi.getPlacePhotos(googleApiClient, placeId)))
.flatMapIterable(PlacePhotoMetadataResult::getPhotoMetadata)
.flatMap(metadata -> toObservable(metadata.getPhoto(googleApiClient)))
.map(Photo::getBitmap);
}
开始研究如何实现桥接的一个好地方是这个库,但它只是RxJava 1。
问题内容: 在下面的代码中,我希望循环在+ + =时立即退出。但是,使用语句进行测试表明它一直持续到循环完成为止。我尝试过,然后在语句集中进行设置,但这会导致无限循环。我认为使用然后设置可能有效,但也可以一直运行到循环结束为止。什么是最优雅,最快的退出方式?谢谢。 问题答案: 该循环将只匹配条件时,当控制返回到它,即循环完全执行。因此,这就是即使满足条件也不会立即退出程序的原因。 但是,如果条件没
问题内容: 在Python中,尝试对具有循环的列表执行最基本的追加功能:不知道我在这里缺少什么: 返回: 问题答案: 该函数不返回任何值(而是),它只是将值添加到用于调用该方法的列表中。 在第一个循环中,您将分配(由于不返回)给,然后在第二个循环中,它将尝试调用,因为它将引发您看到的Exception 您只需要将其更改为: 这就是所谓的 变异或破坏性 方法,即它将破坏或变异先前的对象成为一个新的(
我已经用Java编写了这个开关案例程序。但是,while循环没有中断。代码如下: 我不知道,为什么break函数在这个循环中不起作用…请帮帮我..
问题内容: 我正在尝试使用for循环跳过值。就像是 有什么建议?谢谢! 问题答案: 在循环开始时使用它: 这比仅继续进行要好得多。您不想迭代128到159。你会浪费时间。
//在下面的程序中,在内部,当用户收到指令时,他可以简单地进入哨兵退出while循环,但是,当您得到希望购买的票的结果时,按999并不退出程序
它没有提供关于如何执行和的帮助,这在C中定义得很好,并且广泛使用,而且我不必为STDIN读取数据。 有人能帮我用一个与上面的C代码相当的Bash吗?