안녕하세요. Firebase 저장소에 mp4 파일을 업로드 / 다운로드 하는 앱을 만들고 있습니다.
적은양은 괜찮지만 많은양(1500개(10mb) 정도의 파일을 처리 해야합니다.)의 파일을 업로드 / 다운로드 하면아래와 같은 에러가 발생합니다.
java.util.concurrent.RejectedExecutionException: Task com.google.firebase.storage.StorageTask$8@f8b80ec rejected from java.util.concurrent.ThreadPoolExecutor@235fcb5[Running, pool size = 2, active threads = 2, queued tasks = 128, completed tasks = 0]
at java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:2049)
at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:814)
at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1360)
at com.google.firebase.storage.zzd.zzu(Unknown Source)
at com.google.firebase.storage.UploadTask.schedule(Unknown Source)
at com.google.firebase.storage.StorageTask.zzaaP(Unknown Source)
at com.google.firebase.storage.StorageReference.putFile(Unknown Source)
at kr.laipsul.onycom.stt.Fragment.PlayerFragment.uploadAudio(PlayerFragment.java:250)
at
화면은 프레그먼트로 구성하였고, 내장 메모리/aaa 폴더 내 파일을 리스트뷰로 보여주고 있습니다. 업로드 버튼을 선택하면
반복문으로 경로에 있는 파일들을 아래 uploadAudio() 함수에서 처리하도록 하고있습니다.
private void uploadAudio(String mFilePath, final String serverName) {
//업로드 중 보여줄 ProgressDialog
mProgress.setMessage("Uploading mp4.. ");
mProgress.show();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
long ct = System.currentTimeMillis();
final String strCT = sdf.format(ct);
StorageReference filePath = mStorage.child(strCT).child(ServerName);
Uri uri = Uri.fromFile(new File(mFilePath));
filePath.putFile(uri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
//업로드 후 처리
mProgress.dismiss();
}
});
}
구글링 했을 때 최대 대기열보다 많은 양이 한번에 넘어가서 그런것 같은데요. 정리를 하면
uploadAudio() 함수를 호출할때 순서대로 처리하는 방법을 알고싶습니다.