我正在开发一款需要大量API调用的Android应用。我构建了一个实现基于IntentService的排队系统的系统。问题是,我想在IntentService运行时显示准确的ProgressBar更新。
一种方法是将排队系统更改为一系列AsyncTasks。我必须使用onProgressUpdate()
显示进度。
另一种方法是调整IntentService并从后台线程获取进度。
问题是,我想结合使用IntentService和AsyncTask的很好的功能:建立一个可以轻松处理UI事件的排队系统。有没有最好的方法来实现它?
修改 我最终使用AsyncTasks而不是IntentServices。但是,如果有人有一个很好的模式来分享来从IntentService更新进度,请随时添加你的评论。
答案 0 :(得分:2)
我
通过这种方式,您可以使用一个后台线程来处理您的工作队列,并将您喜欢的任何内容发布回UI线程,而无需处理广播
答案 1 :(得分:1)
对我来说,对于IntentService,我在考虑广播何时开始进度条,以及何时结束进度条。通常,您可以使用标准的“接收”作为结束部分。您可以使用不同的字符串注册不同的意向广播。
棘手的部分是找出调用的方法,以确定是否取消了进度条,并且我正在考虑拥有一个可以随着REST调用的进行而更新的状态表。该表将具有该调用的id,并且在完成后,该条目将被删除。如果线程应该处于活动状态,该表将跟踪。
因此,REST线程将在每次发送之前检查表,并停止所有/忽略如果检测到取消则发回数据