好的,我有这个应用程序需要定期向 Web 服务发送更新,我已经进行了大量研究,并且提出了两种服务实现模式。
使用线程实现服务,周期性更新时间可能会有所不同,因此我将让线程以所需的时间间隔休眠,然后再次调用 Web 服务。我还需要更新活动,因此将使用广播接收器或信使。
使用带有调度计时器/警报管理器的服务,唤醒系统并使用与广播接收器耦合的意图服务。
哪个是最好的方法?
好的,我有这个应用程序需要定期向 Web 服务发送更新,我已经进行了大量研究,并且提出了两种服务实现模式。
使用线程实现服务,周期性更新时间可能会有所不同,因此我将让线程以所需的时间间隔休眠,然后再次调用 Web 服务。我还需要更新活动,因此将使用广播接收器或信使。
使用带有调度计时器/警报管理器的服务,唤醒系统并使用与广播接收器耦合的意图服务。
哪个是最好的方法?
我想我会选择 #2 选项:
IntentService
进行更新。BroadcastReceiver
用IntentFilter
(s)注册 a并IntentService
从它开始。AlarmManager
以Broadcast
所需的时间间隔使用已注册的操作。我更喜欢这种方法,因为:
IntentService
主要区别在于用户可以关闭后台服务,然后您将不再获得任何更新。如果您向 AlarmManager 注册事件,那么您可以控制这些事件何时/是否发生。如果用户关闭您的应用程序并进入任务管理器并关闭与您的应用程序相关的任何正在运行的服务,AlarmManager 仍将唤醒并发送您的 BroadcastReceiver 将接收的消息。