2011-10-07 34 views
4

我正在研究需要大量API调用的Android应用程序。我已经构建了一个基于IntentService的实现排队系统的系统。事情是,我想在IntentService正在运行时显示一个准确的ProgressBar更新。获取IntentService的进度

一种方法是将排队系统更改为一系列AsyncTasks。我将不得不使用onProgressUpdate()来显示进度。

另一种方式是扭捏IntentService并获得从后台线程的进度。

的事情是,我想IntentService和的AsyncTask不错的功能结合起来:作出这样的处理很容易UI事件的排队系统。有没有最好的方法来实现呢?

编辑: 我已经结束了使用AsyncTasks而不是IntentServices。但是,如果任何人有一个很好的模式来共享来更新IntentService的进度,请随时添加您的评论。

+0

嘿,我也试图做同样的事情,但不能。我在doPrebackground和onPre和onPostExecute()中的进度条代码中进行网络调用。现在我正试图映射到意向服务。如何处理其中的进度条码。任何帮助将是伟大的.. – Atihska

回答

2

我倒是

  • 开始HandlerThread和处理程序
  • 获取主UI线程的处理程序
  • 岗位工作,以使用线程的处理器
  • 后进度更新后台线程和结果使用UI线程的处理程序到用户界面

这样你就可以拥有一个单一的后台线程你的工作队列,并发布任何你喜欢回到UI线程没有处理广播

1

与我一样,对于IntentService,我正在考虑广播什么时候开始进度条,什么时候结束进度条。通常,您可以使用标准的“接收回”作为结束部分。您可以使用不同的字符串注册不同的意向广播。

最棘手的部分是要弄清楚呼叫,以找出是否在进度条被取消的方式,我想有作为REST调用的进展,可以得到更新状态表。该表将具有该呼叫的ID,并且在完成之后,该条目被删除。如果线程应该处于活动状态,表格将保持跟踪。

因此,其余线程将检查表中的每个发送之前,停止一切/忽略发回的数据,如果它检测到取消