0

ProgressValue(传入 onPostExecute() 中的)如何AsyncTask表示。它的价值取决于什么?

4

2 回答 2

1

你的意思是onProgressUpdate()

进度值是您想要的任何值。如果要显示百分比进度条,可以使用 0..100 范围内的整数。如果要显示文本消息,则传递一个字符串。

在后台操作的某些点,publishProgress()使用您要发送的任何值(整数、字符串等)进行调用。这将被传递到onProgressUpdate()主线程上的方法中,因此您可以根据需要在 UI 中显示该值。

如果您知道要完成多少工作,以及您的操作完成了多远(可能您的后台操作在循环中运行),那么在循环的每次迭代中,您可以将进度发布为剩余工作量的百分比.

如果后台任务包含一堆不同的操作,那么您可能想要发送诸如“正在加载数据”、“正在准备报告”之类的消息。

完全由您决定要发送哪些值以及如何计算它们。

于 2012-04-23T10:27:27.237 回答
1

创建 AsyncTask 类时,您可以指定参数、进度和结果的类型:

private class MyTask extends AsyncTask<ParamType, ProgressType, ResultType> { ... }

如果您想使用进度值来更新进度条,我建议您使用 Integer,这样您的类声明将如下所示:

private class MyTask extends AsyncTask<ParamType, Integer, ResultType> { ... }

应在某处进行以下调用doInBackground()

publishProgress(progress_value);  // progress_valus is integer

您的onProgressUpdate()成员将如下所示:

protected void onProgressUpdate(Integer... values)  {
    super.onProgressUpdate(values);
    dialog.setProgress(values[0]);  // dialog is the ProgressDialog
}
于 2012-04-23T10:41:15.987 回答