2012-04-23 77 views

回答

1

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

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

如果你想使用进度值更新进度条,我建议使用整型,所以你的类声明如下所示:

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 
} 
1

你的意思是onProgressUpdate()

进度值是任何你想要的。如果要显示百分比完整进度栏,则可以使用0到100之间的整数。如果你想显示一个文本消息,然后传递一个字符串。

在您的后台操作的某些点上,您可以调用publishProgress()任何您想要发送的值(整数,字符串等)。这将在主线程中传递给您的onProgressUpdate()方法,以便您可以在UI中显示值。

如果您知道需要完成多少工作,并且通过操作有多远(也许您的后台操作在循环中运行),那么在循环的每次迭代中,您都可以将进度显示为工作量的百分比留下来做。

如果后台任务包含一堆不同的操作,那么也许你想发送一条消息,如“加载数据”,“准备报告”等。

完全取决于你决定发送什么值,以及如何计算它们。

+0

如何传递价值,以及如何? 。以及a如何控制进度值以涵盖后台进程的长度? – Adham 2012-04-23 10:29:13

相关问题