【发布时间】:2015-04-25 00:45:52
【问题描述】:
我正在尝试使用 OkHttp 下载文件并使用 Okio 写入磁盘。我还为这个过程创建了一个可观察的 rx。它正在工作,但它明显比我以前使用的(Koush 的 Ion 库)慢。
以下是我创建 observable 的方法:
public Observable<FilesWrapper> download(List<Thing> things) {
return Observable.from(things)
.map(thing -> {
File file = new File(getExternalCacheDir() + File.separator + thing.getName());
if (!file.exists()) {
Request request = new Request.Builder().url(thing.getUrl()).build();
Response response;
try {
response = client.newCall(request).execute();
if (!response.isSuccessful()) new IOException();
else {
BufferedSink sink = Okio.buffer(Okio.sink(file));
sink.writeAll(response.body().source());
sink.close();
}
} catch (IOException e) {
new IOException();
}
}
return file;
})
.toList()
.map(files -> new FilesWrapper(files);
}
有谁知道是什么原因导致速度变慢,或者我使用的运算符不正确?
【问题讨论】:
-
你和以前一样在做什么?就目前而言,您一次只执行一个请求,而不是并行执行它们......
-
您忘记了
throw以获取不成功的回复。
标签: android rx-java okhttp rx-android okio