Android如何编制Intentservice队列?

时间:2011-06-10 14:18:23

标签: android service intentservice

我有一个带有下载按钮的活动。当我点击它时,服务就开始了。该服务创建通知并将其发布在通知栏中。如果我显示通知详细信息,我可以看到显示下载状态的进度条。

因为我不知道服务在主线程上运行,有人建议我使用一个自己创建工作线程的intentservice。所以一切都很好,我的gui在下载过程中不会冻结。

我有一个问题。要使用intentservice,我必须在onHandleIntent方法中实现下载代码和通知部分。 现在我发现一个intentservice有一种每次管理一次意图的队列。因此,如果我从活动中单击下载按钮两次,则会创建新通知,开始下载,然后在完成后再次输入onHandleIntent,它会创建第二个通知并开始第二次下载。 对我来说,可以将文件背靠背而不是一起下载,但至少我希望如果我按两次下载按钮,serivce上传通知说有2个下载等待。我无法做到这一点导致意图服务执行一次代码再次..........有没有办法解决它?

有没有办法手动处理队列说...如果你得到另一个意图做这个........更新通知.......然后继续下载dirst ....

另一个问题,意图服务是否可以修改gui,因为它正在处理另一个线程,或者我必须使用处理程序并将消息发送回活动?

最后,是创建的线程,是在onCreated方法之后还是在onHandleIntent内部?

1 个答案:

答案 0 :(得分:1)

您可以在SharedPreferences或Application类文件中保存下载项的数量(两者都可以全局访问),并将数字意图传递给IntentService以获取通知消息。您的Application类可以有更新下载数字的方法(总数,当前文件等)。您可以在销毁或下载完成后从IntentService更新此信息并在通知中显示。