Android 进度对话框不显示';t在AsyncTask onProgressUpdate上更新

Android 进度对话框不显示';t在AsyncTask onProgressUpdate上更新,android,multithreading,dialog,ui-thread,Android,Multithreading,Dialog,Ui Thread,我正在开发一个Android 3.1及以上的应用程序 我有以下代码来下载一些json数据: public class FormsListActivity extends ListActivity { private List<Form> mForms; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState)

我正在开发一个Android 3.1及以上的应用程序

我有以下代码来下载一些json数据:

public class FormsListActivity extends ListActivity
{
    private List<Form> mForms;

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.formlist);

      FormListAsyncTask formAsyncTask = new FormListAsyncTask(this);
      formAsyncTask.execute("http://192.168.1.128/RestServiceImpl.svc/forms/");
    }

    private class FormListAsyncTask extends AsyncTask<String, Integer, List<Form>> {

        private Context mContext;
        private ProgressDialog loadingDialog;

        FormListAsyncTask(Context context)
        {
            mContext = context;
            loadingDialog = new ProgressDialog(mContext);
            loadingDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
            loadingDialog.setMessage("Downloading. Please wait...");
            loadingDialog.setCancelable(false);
            loadingDialog.setMax(100);
            loadingDialog.show();
        }

        @Override
        protected List<Form> doInBackground(String... url)
        {
            Log.v("doInBackground", "retreiving forms");
            return FormSpringController.LoadAll(url[0]);
        }
        // Just some example code to update your progress dialog
        protected void onProgressUpdate(Integer... values)
        {
            Log.v("onProgressUpdate", "updating: " + ((int) ((values[0] / (float) values[1]) * 100)));
            loadingDialog.setProgress((int) ((values[0] / (float) values[1]) * 100));
        }

        protected void onPostExecute(List<Form> forms)
        {
            if (forms != null)
            {
                ListActivity act = (ListActivity) mContext;
                act.setListAdapter(new FormAdapter(act, R.layout.form_list_item, forms));
                mForms = forms;
            }
            else
            {
                TextView errorMsg = (TextView)
                        ((FormsListActivity) mContext).findViewById(R.id.formErrorMsg);
                errorMsg.setText("Problem downloading forms. Please try again later.");
            }
            loadingDialog.dismiss();
        }
    }
}
公共类FormsListActivity扩展了ListActivity
{
私有列表格式;
@凌驾
创建时的公共void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.formlist);
FormListAsyncTask formAsyncTask=新建FormListAsyncTask(此);
formAsyncTask.execute(“http://192.168.1.128/RestServiceImpl.svc/forms/");
}
私有类FormListAsyncTask扩展了AsyncTask{
私有上下文;
私有进程对话框加载对话框;
FormListAsyncTask(上下文)
{
mContext=上下文;
loadingDialog=新建ProgressDialog(mContext);
loadingDialog.setProgressStyle(ProgressDialog.STYLE_水平);
loadingDialog.setMessage(“正在下载,请稍候…”);
loadingDialog.setCancelable(假);
loadingDialog.setMax(100);
加载dialog.show();
}
@凌驾
受保护列表doInBackground(字符串…url)
{
Log.v(“doInBackground”、“Retrieving forms”);
返回FormSpringController.LoadAll(url[0]);
}
//只是一些更新进度对话框的示例代码
受保护的void onProgressUpdate(整型…值)
{
Log.v(“onProgressUpdate”,“updateing:+((int)((value[0]/(float)value[1])*100));
loadingDialog.setProgress((int)((值[0]/(float)值[1])*100));
}
受保护的void onPostExecute(列表表单)
{
if(forms!=null)
{
ListActivity act=(ListActivity)mContext;
act.setListAdapter(新FormAdapter(act,R.layout.form_列表项,表单));
mForms=表格;
}
其他的
{
TextView errorMsg=(TextView)
((FormsListActivity)mContext.findViewById(R.id.formErrorMsg);
errorMsg.setText(“下载表单时出现问题,请稍后再试。”);
}
loadingDialog.disclose();
}
}
}

为什么加载对话框的进度没有在onProgressUpdate上更新?

我没有找到任何
publishProgress()在您的代码中

从您的
doInBackground()
调用publishProgress(),隐式调用override
onProgressUpdate()

我遵循以下示例:试试这个