ProgressValue
(传递AsyncTask
中的onPostExecute())如何表示。它的价值取决于什么?
答案 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
}