Android 下载json时如何更新progressBar
我想下载一个文件 我放了一个进度条来下载Jason。。 我的问题是进度条没有更新。 正确下载,但不更新进度条 有什么问题? java代码:Android 下载json时如何更新progressBar,android,Android,我想下载一个文件 我放了一个进度条来下载Jason。。 我的问题是进度条没有更新。 正确下载,但不更新进度条 有什么问题? java代码: public class GetJsonTask extends AsyncTask<String, String, String> { @Override protected void onProgressUpdate(String... progress) {
public class GetJsonTask extends AsyncTask<String, String, String>
{
@Override
protected void onProgressUpdate(String... progress) {
// setting progress percentage
dialog.setProgress(Integer.parseInt(progress[0]));
}
protected void onPreExecute()
{
dialog = new ProgressDialog(MainActivity.this);
dialog.setMessage("Downloading " + " from the server. Please wait.");
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
dialog.setCancelable(false);
dialog.setCanceledOnTouchOutside(false);
dialog.show();
}
@Override
protected String doInBackground(String... urls) {
// TODO Auto-generated method stub
try {
InputStream inputStream = null;
DefaultHttpClient defaultHttpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(urls[0]);
HttpResponse httpResponse = defaultHttpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
inputStream = httpEntity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
byte data[] = new byte[1024];
long total = 0;
while ((count = reader.read()) != -1) {
total += count;
// publishing the progress....
// After this onProgressUpdate will be called
publishProgress(""+(int) ((total*100) / 10000) );
}
inputStream.close();
String result = sb.toString();
return result;
} catch (Exception ex) {
Log.e("aa2", "erroor2"+ex.toString());
return null;
}
}
@Override
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
dialog.dismiss();
}
}
公共类GetJsonTask扩展异步任务
{
@凌驾
受保护的void onProgressUpdate(字符串…进度){
//设置进度百分比
setProgress(Integer.parseInt(progress[0]);
}
受保护的void onPreExecute()
{
dialog=新建ProgressDialog(MainActivity.this);
setMessage(“正在从服务器下载“+”,请稍候”);
设置ProgressStyle(ProgressDialog.STYLE_水平);
对话框。可设置可取消(false);
对话框。setCanceledOnTouchOutside(false);
dialog.show();
}
@凌驾
受保护的字符串doInBackground(字符串…URL){
//TODO自动生成的方法存根
试一试{
InputStream InputStream=null;
DefaultHttpClient DefaultHttpClient=新的DefaultHttpClient();
HttpPost HttpPost=新的HttpPost(URL[0]);
HttpResponse HttpResponse=defaultHttpClient.execute(httpPost);
HttpEntity HttpEntity=httpResponse.getEntity();
inputStream=httpEntity.getContent();
BufferedReader=新的BufferedReader(新的InputStreamReader(inputStream,“iso-8859-1”),8);
StringBuilder sb=新的StringBuilder();
字符串行=null;
而((line=reader.readLine())!=null){
sb.追加(第+行“\n”);
}
字节数据[]=新字节[1024];
长总计=0;
而((count=reader.read())!=-1){
总数+=计数;
//发布进度。。。。
//在此之后,将调用onProgressUpdate
出版进度(“+(int)((总计*100)/10000));
}
inputStream.close();
字符串结果=sb.toString();
返回结果;
}捕获(例外情况除外){
Log.e(“aa2”,“erroor2”+ex.toString());
返回null;
}
}
@凌驾
受保护的void onPostExecute(字符串结果){
//TODO自动生成的方法存根
super.onPostExecute(结果);
dialog.dismise();
}
}
如中所述,您应该设置setUndeterminate(false)
的可能重复项