我有一个带有下载按钮的活动。当我点击它时,服务就会启动。该服务创建一个通知并将其发布在通知栏中。如果我显示通知详细信息,我可以看到一个显示下载状态的进度条。
因为我不知道服务在主线程上运行,有人建议我使用一个可以自己创建工作线程的意图服务。所以一切都很好,我的 gui 在下载过程中没有冻结。
我有一个问题。要使用intentservice,我必须在onHandleIntent 方法中实现下载代码和通知部分。现在我发现意图服务有一种队列,每次管理一次意图。因此,如果我从活动中单击下载按钮两次,它会创建一个新通知,开始下载,然后在完成后再次输入 onHandleIntent,它会创建第二个通知并开始第二次下载。对我来说,背靠背下载文件而不是一起下载文件很好,但至少我希望如果我按两次下载按钮,服务会上传通知说有 2 个下载等待。我无法做到这一点,因为意图服务一次又一次地执行代码............有没有办法解决它?
有没有办法手动处理队列,比如......如果你有另一个意图这样做............更新通知.......然后继续 dirst 下载...... .
另一个问题,考虑到正在另一个线程上工作,意图服务是否可以修改 gui,或者我必须使用处理程序并将消息发送回活动?
最后,线程是在哪里创建的,就在 onCreated 方法之后或 onHandleIntent 内部?