I have same stock item , I want to send local database to ApiService, But when I send also I want to update ProgressBar message. I tried the code below but it just shows when all proccessing is finishing.
  ProgressDialog progress= new ProgressDialog(this);        
  progress.setTitle(getResources().getString(R.string.progress_exporting));
  progress.setMessage("0/0");
when click button I call below method
  public void Export() {
    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            findViewById(R.id.btnExportOnlineWithStocktaking).setEnabled(false);
            progress.show();
        }
    });
    UpdateUI(send, total);
    try {
        switch (_stocktakingType) {
         case Division: {
                switch (_onlineExportType) {
                    case Item: {
                        isExport = ExportDivisionStocktakingItems(stocktakingId);
                    }
                    break;
                }
        } catch (Exception ex) {
    }
  }
// ExportDivisionStocktaking method
 public boolean ExportCustomStocktakingItems(int stocktakingId) {
     result = Boolean.parseBoolean(SendCustomStocktakingItems(stocktakingId,countResults).responseString);
}
My call back method
public ResponseModel SendCustomStocktakingItems(int selectedDivision, List<ExtensionServiceStocktakingItem> countResults) throws ExecutionException, InterruptedException {
    return new SendCustomStocktakingItemsService(flag -> true).execute(String.valueOf(selectedDivision), countResults.toString()).get();
}
//AsyncTask method
 public class SendDivisionStocktakingItemsService extends AsyncTask<String, Void, ResponseModel> {
    public AsyncResponseSendDivisionStocktakingItems delegate = null;
    public SendDivisionStocktakingItemsService(AsyncResponseSendDivisionStocktakingItems delegate) {
        this.delegate = delegate;
    }
    @Override
    protected ResponseModel doInBackground(String... parameters) {
        RequestHandler requestHandler = new RequestHandler();
        JSONObject params = new JSONObject();
        try {
            params.put("stocktakingItems", parameters[1]);
        } catch (JSONException e) {
            e.printStackTrace();
        }
        ResponseModel responseModel = requestHandler.getRequestPostString(UHFApplication.getInstance().apiUrl
                        + "/api/MobileService/SendDivisionStocktakingItemsPost?stocktakingID="
                        + parameters[0],
                parameters[1]);
        return responseModel;
    }
    @Override
    protected void onPreExecute() {
        UpdateUI(send,total);
        super.onPreExecute();
    }
    @Override
    protected void onPostExecute(ResponseModel responseModel) {
        super.onPostExecute(responseModel);
        if (HttpURLConnection.HTTP_OK == responseModel.httpStatus) {
            delegate.processFinish(true);
        } else {
            delegate.processFinish(false);
        }
    }
}
//UICalled method
 public void UpdateUI(int send, int total) {
    runOnUiThread(() -> {
        progress.setMessage(send + "/" + total);
        Log.d("Send Data : ", send + "/" + total);
        if (send == total) {
            progress.dismiss();
            Toast.makeText(getApplicationContext(), "Succsess", Toast.LENGTH_SHORT).show();
        }
    });
}
//Update
//Ok I have a simle example how can I use. Below code when I click button I wan to open progress firstly and after that for loop is working and update progres message. I try it but not working.
Firstly For loop is working and after that progres opened.
 public void ExportTry(){
    UpdateUI(send,total);
    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            btnExport.setEnabled(false);
            progress.show();
        }
    });
    for(int i=0;i<1000000;i++){
        UpdateUI(i,1000000);
    }
}
 
     
    