ArrayList内のすべてのファイルをダウンロードするこの機能を持っています。これを同期させるには、1つのファイルしかダウンロードしません。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