У меня есть длинный процесс, который используется для преобразования выбранных изображений из галереи в массив байтов и использования этого для построения класса модели, и я устанавливаю этот класс модели для модификации как в качестве необработанного тела запроса. Поскольку преобразование изображения занимает некоторое время, а также запрос на модификацию, показ диалога прогресса всегда заканчивается сбоем.Как показать диалог прогресса вместе с длинной операцией и доработкой?
private class EmailAsync extends AsyncTask<String, String, String> {
@Override
protected String doInBackground(String... strings) {
getBytesFromBitmap(selected.get(i).sdcardPath, i + ""); //here i'll get the image byte arrays
emaildocumentsList.add(documentsmail);
emaildocuments.set(emaildocumentsList); //here i'll set the modelclass
Retrofit retrofitApi = new Retrofit.Builder().addConverterFactory(GsonConverterFactory.create()).client(okHttpClient)
.baseUrl(BASE_URL_PROD).build();
RetrofitApi requestApi = retrofitApi.create(RetrofitApi.class);
String encodedHeader = "Basic " + "d2VzdGxha2VtYXJrZXRpbmc6TFJVN0xiR1pvdDZpMHQ3T3p3UnpsVTRxdkQ2UGRJZjU=";
retrofit2.Call<ResponseBody> responseBodyCall = requestApi.EmailAttachUploader(encodedHeader, cookies,emaildocuments);
responseBodyCall.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
progressbuilder.dismiss();
if (response != null) {
if (response.body() == null) {
//Toast.makeText(MultipleImageSelectGalleryActivity.this, "Exception: {Nullpointer Exception}", Toast.LENGTH_SHORT).show();
setResult(524);
finish();
}
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
progressbuilder.dismiss();
//Toast.makeText(MultipleImageSelectGalleryActivity.this, "Upload Failed!", Toast.LENGTH_SHORT).show();
setResult(524);
finish();
}
});
}
@Override
protected void onPreExecute() {
super.onPreExecute();
progressbuilder.show();
}
Каждый раз, когда ошибка показывает окна просочилось вместе с не может создать петлитель внутри, здесь я показываю диалог прогресса в onpreexecute метода, то и случается. Как решить эту проблему?
проверить этот ответ http://stackoverflow.com/questions/41277575/logging-with-retrofit2-without-okhttp-intercept/41277944#41277944 диалог прогресса внутри. –
Почему вы используете задачу async для переоборудования? ... для диалога прогресса запустите диалог, прежде чем перестраивать вызов и отклонять его в ответ onresponse и onfailure. –
onpreexecute Я показываю диалог прогресса, так как преобразование изображений - это долгий процесс, мне нужно подождать, пока он не закончится для построения класса модели. @AnkushBist –