进度条不更新上传多部分的位置

时间:2012-10-31 03:46:04

标签: android android-emulator

我有像这样使用multipart上传的代码,在这段代码中我添加了进度条

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);
            } 

但是当我运行此代码时,进度条没有显示progressBar没有更新进程。我只看到%0和%100。怎么解决这个?你可以帮忙吗?

感谢

2 个答案:

答案 0 :(得分:0)

您上传的数据有多大(以字节为单位)?它可能很小,只有一次调用进度监听器:它何时完成。

答案 1 :(得分:0)

您的totalSize可能为0,请尝试在您的publishProgress

中将其记录下来

还尝试记录此totalSize = reqEntity.getContentLength();