在改造中的AsyncTask类中显示进度对话框

时间:2019-02-14 12:33:17

标签: android android-asynctask retrofit2 progressdialog

我正在开发Android应用。 我必须调用API并获取结果。因此,我使用改造库并调用API。 所有代码正常工作,并得到很好的结果。

我想在显示和更新进度对话框时以及关闭完成进度对话框后获取数据。

我尝试过。但是我只能显示它并关闭onResponse类中的进度对话框。

无法在onPostExecute和onProgressUpdate方法上调用AsyncTask类。

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方法,然后在获取数据后显示提示信息并关闭。

谢谢。

0 个答案:

没有答案