показать диалог прогресса в классе AsyncTask при модернизации - PullRequest
0 голосов
/ 14 февраля 2019

Я занимаюсь разработкой приложения для Android.Я должен вызвать API и получить результат. Так что я использую библиотеку модернизации и вызываю API.Весь код и работает и получить результат в порядке.

Я хочу получить данные при отображении и обновлении диалогового окна прогресса и после завершения диалогового окна прогресса.

Я пытаюсь. Но я могу только показать изакрыть диалог прогресса в классе onResponse.

не может вызвать класс AsyncTask для методов onPostExecute и onProgressUpdate.

private ProgressDialog progressDialog;

public  ClientInfo(Context ct){
    WeakReference<Context> contextRef = new WeakReference<>(ct);
    progressDialog =  new ProgressDialog(contextRef.get());
}

@Override
protected String doInBackground(String... strings) {
    String token = strings[0];
    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(Config.Api)
            .addConverterFactory(GsonConverterFactory.create())
            .build();

    GetClientApi getClientApi = retrofit.create(GetClientApi.class);
    Call<ClientApiInfo> clientApiInfoCall =  getClientApi.getClientApiInfo(token);

    clientApiInfoCall.enqueue(new Callback<ClientApiInfo>() {
        @Override
        public void onResponse(@NonNull Call<ClientApiInfo> call, @NonNull Response<ClientApiInfo> response) {

            if(response.code() == 200){              
                progressDialog.dismiss();
            }
            else if (response.code() == 404) {
                progressDialog.dismiss();
            }
        }

        @Override
        public void onFailure(@NonNull Call<ClientApiInfo> call, @NonNull Throwable t) {

        }
    });


    return null;
}

@Override
protected void onPreExecute() {
    progressDialog.setMessage("Start");
    progressDialog.show();
    super.onPreExecute();
}

@Override
protected void onPostExecute(String s) {

    super.onPostExecute(s);
}

@Override
protected void onProgressUpdate(String... values) {
    progressDialog.setMessage(values[0]);
    super.onProgressUpdate(values);
}

мне нужно разрушить метод doInbackground во время обновления диалога прогресса и после того, как он закончится, отобразить данныемассаж и уволить.

Спасибо.

...