0

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

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

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

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

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

最后,线程是在哪里创建的,就在 onCreated 方法之后或 onHandleIntent 内部?

4

1 回答 1

1

您可以将下载项目的数量保存在 SharedPreferences 或 Application 类文件中(两者都可以全局访问)并将数量意图传递给 IntentService 以获取通知消息。您的 Application 类可能具有更新下载数量(总数、当前文件等)的方法。您可以在 IntentService 被销毁或下载完成并显示在通知中时对其进行更新。

于 2011-06-24T18:38:53.793 回答