2013-08-06 61 views
-1

我有一个AsyncTask类,它可以处理我的应用的所有网络呼叫。我也有一个持有进度对话框的Globals类。现在,我想要的是一次只有一个进度对话框;这很简单。 Globals类会初始化对话框,并且每次被AsyncTask使用时,只会更改消息。我的问题是确定何时解雇它。如果我在onPostExecute()的末尾使用p.dismiss(),则进度条将消失,直到下一个AsyncTask运行,这不是我想要的。但是,如果我不包含该行,那么进度对话框将无限期地保持不变。我想我试图找到的是一种方法,看看是否所有AsyncTasks已完成运行。通过这样做,那么这个全球进度对话框就能够关闭而不会看起来不整洁。Android全局进度对话框

将所有AsyncTasks链接在一起不是一个选项(例如,第一个在onPostExecute()中执行第二个)。

还要注意,有可能是之间的任何一个和五个AsyncTasks在同一时间运行。

如何确定每个AsyncTask是否完整?

回答

1

,你可以跟踪你有多少开始的,并创建一个回调到每类任务的完成时间,然后在返回的计数开始匹配算你知道所有的任务都做了。

真的没有办法知道什么时候看到哪些任务正在运行而没有做这样的事情。

有一个getStatus但你必须保持轮询状态或看个人任务完成不

+0

啊。我担心会这样。好吧。感谢您的帮助。 和网站告诉我,我必须等待4分钟,给你最好的答案。 –

+2

您不需要轮询每个任务的onPostExecute,查看是否所有其他任务都已完成。如果是这样,那么他们都完成了。如果没有,那么不是所有的人都完成了。所以你只需要保存一个已经开始的任务列表。但是对于他的使用,一个简单的变量会在每个任务的onPreExecute中递增,并在每个类的onPostExecute中递减,并在达到0时关闭dialgo。 –

+0

Gabe,这实际上比我想象的要简单得多。谢谢;这是非常有用:) –