progress bar not update where upload multipart

百般思念 提交于 2020-01-17 03:01:29

问题


I have code to upload using multipart like this , in this code I have add 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 didnt show the progressBar not updating on process. I just see %0 and %100. How to solve this?? can u help ?

thanks


回答1:


How large (in bytes) is the data you're uploading? It may be so small that the progress listener only gets called once: when it's finished.




回答2:


Your totalSize is probably 0, try to log that out in your publishProgress

Also try to log this totalSize = reqEntity.getContentLength();



来源:https://stackoverflow.com/questions/13150978/progress-bar-not-update-where-upload-multipart

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!