我有一个IntentService
从服务器下载数据的设备,我希望IntentService
每隔一段时间检查服务器更新。但是,以下帖子建议不要重复Service
使用 a Timer
- 而是强调使用 a AlarmManager
:
为什么我的服务在 Android 中不起作用?(我只想每 5 秒记录一次)
在 Android 的参考手册中,IntentService 被描述为:
IntentService 是按需处理异步请求(表示为 Intent)的服务的基类。客户端通过 startService(Intent) 调用发送请求;该服务根据需要启动,使用工作线程依次处理每个 Intent,并在工作结束时自行停止。
这种“工作队列处理器”模式通常用于从应用程序的主线程卸载任务。IntentService 类的存在是为了简化这种模式并处理机制。要使用它,请扩展 IntentService 并实现 onHandleIntent(Intent)。IntentService 将接收 Intent,启动工作线程,并酌情停止服务。
所有请求都在单个工作线程上处理——它们可能需要尽可能长的时间(并且不会阻塞应用程序的主循环),但一次只会处理一个请求。
我不太明白的部分是为什么 a IntentService
(帖子有针对 aService
而不是 a 的问题IntentService
)不允许使用 Timer 重复执行,因为它创建了自己的工作线程来执行。是否允许在 aTimer
中使用 a IntentService
?或者是AlarmManagers
定期执行的唯一解决方案IntentService
?
对此的解释将不胜感激。