ファイルをサーバーにロードしようとしています。そして、私はすべての操作が開始enotherメソッドのために行われる前に待つ必要があります。だから私は同期呼び出しを使用します。そして私は新しいスレッドを開始する前にProgressDialogを表示しようとしますが、すべてのスレッドが終了していない間にUIスレッドが終了しました。新しいスレッドの前にProgressDialogが開始しない
private void uploadImageSync() {
final ProgressDialog progressDialog;
progressDialog = new ProgressDialog(BarcodActivity.this);
progressDialog.setMessage("Load...");
progressDialog.show();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(ROOT_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
RequestInterface service = retrofit.create(RequestInterface.class);
int i=0;
while (i++ <= 4) {
File f = getOutputMediaFilePath(mCode + "_"+i, true);
if(f.exists()){
RequestBody requestFile = RequestBody.create(MediaType.parse("multipart/form-data"), f);
MultipartBody.Part body = MultipartBody.Part.createFormData("file", f.getName(), requestFile);
final Call<ResponseBody> resultCall = service.uploadImage(body);
Thread t = new Thread(new Runnable() {
public void run() {
try {
resultCall.execute().body();
} catch (IOException e) {
e.printStackTrace();
}
}});
t.start();
try {
t.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
progressDialog.dismiss();
}