AsyncTask中ProgressDialog.setProgress(value)和ProgressDialog.setMessage(message)之间的区别

时间:2014-10-31 13:00:01

标签: android android-asynctask progressdialog

我之前使用setProgress()方法来更新进度,但现在我需要显示和更新几个进程,所以我尝试使用setMessage()进行操作。 但是,在使用setMessage()时,我会在CalledFromWrongThreadException更新后立即收到ProgressDialog(就像,我看到它很快就会更新)。

这是我的onProgressUpdate方法:

@Override
        protected void onProgressUpdate(Integer... values) {
            super.onProgressUpdate(values);
//          progressdialog.setProgress(values[0]);
            Log.v("PDMessage", "Cycle: " + values[1] + "/" + values[2] + "\n" + "Progress: " + values[0] + "%");
            progressdialog.setMessage("Cycle: " + values[1] + "/" + values[2] + "\n" + "Progress: " + values[0] + "%");
//          updateProgressBar(values[0]);
        }

LogCat向我展示了具有正确值的预期输出,因此没有问题。

有人可以向我解释这里的区别吗? 我知道如何解决它(并且那里已有答案)但我不知道为什么setProgress()不要求我这样做。

1 个答案:

答案 0 :(得分:1)

尝试这样,

  @Override
            protected void onProgressUpdate(Integer... values) {
                super.onProgressUpdate(values);
    //          progressdialog.setProgress(values[0]);
                Log.v("PDMessage", "Cycle: " + values[1] + "/" + values[2] + "\n" + "Progress: " + values[0] + "%");

 runOnUiThread(new Runnable() {
         @Override
         public void run() {
             progressdialog.setMessage("Cycle: " + values[1] + "/" + values[2] + "\n" + "Progress: " + values[0] + "%");

            }



        }
    });