ProgressValue
(传入 onPostExecute() 中的)如何AsyncTask
表示。它的价值取决于什么?
问问题
130 次
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 回答