【发布时间】:2017-05-03 16:38:56
【问题描述】:
我有这个功能可以下载 ArrayList 中的所有文件,我想让这个“同步”,我的意思是我想一次只下载一个文件。
我怎样才能让 FOR 循环等到一个文件被下载然后再下载另一个文件?
public void downloadFiles(ArrayList<String> files, final String destinationFolder){
for(String file:files){
GoogleDrive.getInstance().readFile(file, GoogleDrive.FolderLocation.ROOT_FOLDER, new GoogleDrive.GoogleDriveReadFileCallback() {
@Override
public void successful(String title, byte[] content) {
try {
FileUtils.writeByteArrayToFile(new File(destinationFolder+File.pathSeparator+title), content);
} catch (IOException e) {
Log.e(TAG,"ERROR FileManager.downloadFiles: "+e.toString());
}
}
@Override
public void notFound() { }
@Override
public void error(String error) { }
});
}
}
【问题讨论】:
-
奇怪,我通常开始编写以顺序方式工作的代码;在后来添加并行性之前。首先解决更复杂的问题的有趣方法;-)
-
API 文档中没有任何内容可以告诉您是否可以同步完成?此外,您可以在回调中指定对下一个元素的读取,并以这种方式序列化每个请求。
-
还是个有趣的问题;投我一票!