Progress bar not updating when multipart load

I have code to download using multipart like this, in this code I have a progress bar

protected String doInBackground(String... args) { namapro = inputtitle.getText().toString(); hargapro = inputprice.getText().toString(); despro= inputdes.getText().toString(); orderpro = inputorder.getText().toString(); path = getIntent().getStringExtra("pathimage"); product.setTitle(namapro); product.setPrice(hargapro); product.setDesc(despro); product.setHow(orderpro); product.setImage(path); try{ CustomMultipartEntity multipartContent = new CustomMultipartEntity(new ProgressListener() { @Override public void transferred(long num) { int upload = ((int)((num/(float)totalSize)*100)); String progress = String.valueOf(upload); publishProgress(progress); } }); HttpEntity resEntity; HttpContext httpContext = new BasicHttpContext(); HttpClient httpClient = new DefaultHttpClient(); HttpPost post = new HttpPost(Constants.url_create_product); MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE); File file= new File(path); FileBody bin = new FileBody(file); reqEntity.addPart("phone", new StringBody(mPhoneNumber)); reqEntity.addPart("prod_title", new StringBody(namapro)); reqEntity.addPart("prod_price", new StringBody(hargapro)); reqEntity.addPart("prod_desc", new StringBody(despro)); reqEntity.addPart("prod_order", new StringBody(orderpro)); reqEntity.addPart("prod_image", bin); totalSize = reqEntity.getContentLength(); post.setEntity(reqEntity); HttpResponse response = httpClient.execute(post); resEntity = response.getEntity(); String response_str = EntityUtils.toString(resEntity); Gson gson = new Gson(); gson.toJson(response_str); if (resEntity != null) { //Log.i("RESPONSE",response_str); runOnUiThread(new Runnable(){ public void run() { try { if(daftar.equalsIgnoreCase("2")){// sudah connect fb twitter Intent i = new Intent(productdetail.this, home.class); Toast.makeText(getApplicationContext(), "Upload success", Toast.LENGTH_LONG).show(); startActivity(i); finish(); } else if(daftar.equalsIgnoreCase("1")){ // belum connect fb dan twitter dialog(); } }catch (Exception e) { e.printStackTrace(); } } }); } }catch (Exception ex){ Log.e("Debug", "error: " + ex.getMessage(), ex); dialog_gagal(); } return null; } protected void onPostExecute(String file_url) { // dismiss the dialog once done pDialog.dismiss(); } protected void onProgressUpdate(Integer...progress){ pDialog.setProgress((int) (progress[0])); //pDialog.setProgress(pDialog.getMax()-bytesAvailable); } 

But when I run this code, the progress bar did not show progressBar, not updating the process. I just see% 0 and% 100. How to solve this? may I help?

thanks

0
source share
2 answers

How big (in bytes) is the data you upload? It can be so small that the listener of progress only gets called once: when it ends.

0
source

Your totalSize is probably 0, try writing this to your publishProgress

Also try writing this totalSize = reqEntity.getContentLength();

0
source

Source: https://habr.com/ru/post/1447044/


All Articles