0

好的,我有这个应用程序需要定期向 Web 服务发送更新,我已经进行了大量研究,并且提出了两种服务实现模式。

  1. 使用线程实现服务,周期性更新时间可能会有所不同,因此我将让线程以所需的时间间隔休眠,然后再次调用 Web 服务。我还需要更新活动,因此将使用广播接收器或信使。

  2. 使用带有调度计时器/警报管理器的服务,唤醒系统并使用与广播接收器耦合的意图服务。

哪个是最好的方法?

4

2 回答 2

2

我想我会选择 #2 选项:

  1. 创建一个IntentService进行更新。
  2. BroadcastReceiverIntentFilter(s)注册 a并IntentService从它开始。
  3. AlarmManagerBroadcast所需的时间间隔使用已注册的操作。

我更喜欢这种方法,因为:

  1. 这是一种非常灵活的模式:您可以随时通过注册相同的接收器来执行不同的操作(如网络连接更改、系统启动更改等)来启动服务,
  2. 它使逻辑与应用程序的其他部分保持松散耦合。
  3. 管理线程没有麻烦。您可以通过使用免费获得它IntentService
  4. 这是解决这个问题的更多安卓方式。
于 2012-09-26T20:35:18.693 回答
0

主要区别在于用户可以关闭后台服务,然后您将不再获得任何更新。如果您向 AlarmManager 注册事件,那么您可以控制这些事件何时/是否发生。如果用户关闭您的应用程序并进入任务管理器并关闭与您的应用程序相关的任何正在运行的服务,AlarmManager 仍将唤醒并发送您的 BroadcastReceiver 将接收的消息。

于 2012-09-26T20:32:33.790 回答