我将使用OkHttp下载文件并使用Okio写入磁盘。此外,我已经为此过程创建了一个Rx可观察对象。它可以工作,但是比我之前使用的(Koush的Ion库)明显慢。
有人知道是什么导致了速度缓慢吗?或者我是否使用了不正确的操作符?
以下是我创建可观察对象的方式:
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
。 - Jesse Wilson