我正在上传字符串和照片.它的工作正常.现在我想显示进度条,同时上传数据百分比,但百分比显示很快达到100%,并花费更多时间上传,最后进入后执行方法.
protected class upload_images extends AsyncTask {
ProgressDialog progressDialog;
@Override
protected void onPreExecute() {
super.onPreExecute();
// showDialog(progress_bar_type);
progressDialog = new ProgressDialog(Accept_Report.this);
progressDialog.setCancelable(false);
// dialog.setCanceledOnTouchOutside(false);
progressDialog.setIndeterminate(false);
// progressDialog.setMax(100);
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
// progressDialog.setProgress(0);
progressDialog.setMax(100);
// progressDialog.setMessage("Loading ...");
progressDialog.show();
// ProgressBar progressBar = (ProgressBar)findViewById(R.id.progressBar2);
}
@Override
protected String doInBackground(String... params) {
URL url;
HttpURLConnection connection = null;
String http=Util.URL+"reports/media/create";
try {
url = new URL(http);
connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.setRequestMethod("POST");
/* connection.setConnectTimeout(50000);
connection.setReadTimeout(50000);*/
connection.setRequestProperty("Content-Type","application/json");
connection.setRequestProperty("Content-Language","en-US");
String encoded = Base64.encodeToString(("app" + ":" + "sFif4au7wet8gpsT0boK1oM2Yud6M1").getBytes("UTF-8"),Base64.NO_WRAP);
connection.setRequestProperty("Authorization","Basic " + encoded);
connection.setUseCaches(false);
connection.setDoOutput(true);
connection.connect();
jsonArray = new JSONArray();
right = send_right.toString().replaceAll("\\[","").replaceAll("\\]","");
if((right!=null)&&(right!="")) {
JSONObject pnObj = new JSONObject();
pnObj.put("comments",right_cm);
pnObj.put("section",right_sec);
pnObj.put("pictures",right);
jsonArray.put(pnObj);
}
// return totalSize;
JSONObject jsonParam = new JSONObject();
jsonParam.put("media",jsonArray);
//Send request
int count = 0;
OutputStream wr = connection.getOutputStream();
InputStream inputStream = null;
byte[] payload = jsonParam.toString().getBytes("UTF-8");
int totalSze = payload.length;
Log.e("Total size ","" + totalSze);
int bytesTransferred = 0;
int chunkSize = (2*totalSze)/100;
boolean last_loop = false;
// publishProgress(0);
while (bytesTransferred < totalSze) {
Log.e("bytes transferred","" + bytesTransferred);
int nextChunkSize = totalSze - bytesTransferred;
Log.e("nextchunck",""+nextChunkSize);
//int writer_size = wr.toString().getBytes("UTF-8").length;
Log.e("chunk size","" + chunkSize);
if (nextChunkSize > chunkSize) {
nextChunkSize = chunkSize;
}
wr.write(payload,bytesTransferred,nextChunkSize);
bytesTransferred += nextChunkSize;
Log.e("byte",""+wr.toString().getBytes("UTF-8").length);
Log.e("progress-transferred","" + bytesTransferred +" total "+totalSze);
double cal = (( (double)bytesTransferred / (double) totalSze) * 100);
double rounded = (double) Math.round(cal * 100.0) / 100.0;
Log.e("progress",""+(int)rounded);
publishProgress((int)rounded);
wr.flush();
wr.close();
}catch(Exception e){
Log.d("Exception",e.toString());
}
}*/
Log.e("While loop exit","");
/* wr.flush ();
wr.close();*/
}catch (OutOfMemoryError e)
{
e.printStackTrace();
}
//Get Response
StringBuilder sb = new StringBuilder();
HttpResultimage =connection.getResponseCode();
Log.e("res",""+HttpResultimage);
if(HttpResultimage==204)
{
BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream(),"utf-8"));
String line = null;
while ((line = br.readLine()) != null) {
sb.append(line + "\n");
}
br.close();
System.out.println("" + sb.toString());
}else{
}
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
if(connection != null) {
connection.disconnect();
}
}
return null;
}
@Override
protected void onProgressUpdate(Integer... values){
super.onProgressUpdate(values);
// Log.e("dfsf",""+values[0]);
progressDialog.setProgress(values[0]);
// progressDialog.setProgress(values[0]);
}
@Override
protected void onPostExecute(String result) {
if (HttpResultimage==204) {
progressDialog.dismiss();
}
}
}