我有这个功能下载ArrayList中的所有文件,我想使这个“同步”,我的意思是,我想只下载一个文件,在时间。JAVA同步周期,回调
我怎样才能使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) { }
});
}
}
奇怪的是,我通常开始编写代码,以顺序方式工作;之后再添加并行性。有趣的方法首先解决更复杂的问题;-) – GhostCat
API文档中没有任何内容告诉你是否可以同步完成读取? 另外,你可以在回调中具体的读到下一个元素,并以这种方式序列化每个请求。 –
还是一个有趣的问题;有我的投票! – GhostCat