AsyncTask类中的onPostExecute()中的ProgressValue

时间:2012-04-23 10:24:29

标签: android android-asynctask progress

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

2 个答案:

答案 0 :(得分:1)

您的意思是onProgressUpdate()吗?

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

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

如果您知道要做多少工作,以及您的操作有多远(也许您的后台操作在循环中运行),那么在循环的每次迭代中,您可以将进度发布为工作量的百分比离开了。

如果后台任务包含许多不同的操作,那么您可能希望发送“正在加载数据”,“准备报告”等消息。

完全取决于您决定要发送的值以及如何计算它们。

答案 1 :(得分: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
}