我有一个异步任务,它不会在通过任务时添加百分比.它始终保持在0%0/100
这是我的代码
private class getAppInfo extends AsyncTask<String,String,String> { /** The system calls this to perform work in a worker thread and * delivers it the parameters given to AsyncTask.execute() */ ProgressDialog dialog; @Override protected void onPreExecute() { if(showLoading == true){ dialog = new ProgressDialog(SelfHelp.this); dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); dialog.setMessage("Loading"); dialog.setIndeterminate(true); dialog.setCancelable(false); dialog.setMax(100); dialog.setProgress(100); dialog.show(); } } @Override protected String doInBackground(String... urls) { String xml = null; int count = 0; try { // defaultHttpClient DefaultHttpClient httpClient = new DefaultHttpClient(); HttpGet httpGet = new HttpGet(urls[0]); HttpResponse httpResponse = httpClient.execute(httpGet); HttpEntity httpEntity = httpResponse.getEntity(); xml = EntityUtils.toString(httpEntity); while(count != 100){ publishProgress(""+count); count += 5; } } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } Document doc = parser.GetDomElement(xml); NodeList nl = doc.getElementsByTagName("topic"); getChildElements(nl); return xml; } @Override protected void onProgressUpdate(String... progress) { Log.v("count",progress[0]); dialog.setProgress(Integer.parseInt(progress[0])); } /** The system calls this to perform work in the UI thread and delivers * the result from doInBackground() */ @Override protected void onPostExecute(String result) { //dialog.setProgress(100); menuList.setAdapter(setListItems(menuItems)); menuList.setTextFilterEnabled(true); if(showLoading == true){ dialog.dismiss(); showLoading = false; } }
解决方法
您的问题与setIndeterminate(true)有关:如果要进行更新,应将其设置为false.如果setIndeterminate(true),则ProgressDialog将作为经典的Windows沙漏工作