4

我正在开发一个需要大量 API 调用的 Android 应用程序。我已经构建了一个基于 IntentService 实现排队系统的系统。问题是,我想在 IntentService 运行时显示准确的 ProgressBar 更新。

一种方法是将排队系统更改为一系列 AsyncTask。我将不得不使用onProgressUpdate().

另一种方法是调整 IntentService 并从后台线程获取进度。

问题是,我想结合 IntentService 和 AsyncTask 好的特性:制作一个可以轻松处理 UI 事件的排队系统。有没有最好的方法来实现它?

编辑: 我最终使用了 AsyncTasks 而不是 IntentServices。但是,如果有人有一个很好的模式可以分享来更新 IntentService 的进度,请随时添加您的评论。

4

2 回答 2

2

ID

  • 启动一个HandlerThread和一个Handler
  • 获取主 UI 线程的处理程序
  • 使用该线程的处理程序将工作发布到后台线程
  • 使用 UI 线程的处理程序将进度更新和结果发布到 UI

这样您就可以有一个后台线程来处理您的工作队列,并将您喜欢的任何内容发布回 UI 线程,而无需处理广播

于 2011-11-20T20:26:24.470 回答
1

对我来说,对于 IntentService,我正在考虑广播何时启动进度条,以及何时结束进度条。通常,您可以对结尾部分使用标准的“receive back”。您可以使用不同的字符串注册不同的意图广播。

棘手的部分是想办法让调用找出进度条是否被取消,我正在考虑有一个状态表,它可以随着 REST 调用的进行而更新。该表将具有调用的 id,完成后,该条目将被删除。该表将跟踪线程是否应该处于活动状态。

因此,REST 线程将在每次发送之前检查表,并停止一切/如果检测到取消则忽略发回数据

于 2012-08-12T23:25:43.637 回答