이 함수는 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