0

以前,在桌面环境下,要实现一个股票价格警报系统,这就是我所做的。

  1. 产生一个无限运行Thread
  2. 该线程将从股票服务器执行股票价格查询。
  3. 该线程将根据检索到的股票价格执行所有必要的警报操作。
  4. 线程休眠 N 周期。(N 可以是 30 分钟)
  5. 回到 2。

对于移动环境,电源效率使用是主要考虑因素。即使我使用后退按钮“关闭”应用程序,股票警报机制也应该继续运行。

我的想法有两种方法。

使用服务

  1. 产生一个无限运行Service
  2. 该服务将从股票服务器执行股票价格查询。
  3. 该服务将根据检索到的股票价格执行所有必要的警报操作。
  4. 服务休眠 N 个周期。(N 可以是 30 分钟)
  5. 回到 2。

使用警报管理器

  1. 安装一个BroadcastReceiverAlarmManager.
  2. BroadcastReceiveronReceive将在接下来的 N 个周期内触发。
  3. 当 BroadcastReceiver 被触发时,从股票服务器执行股票价格查询。
  4. BroadcastReceiver 将根据检索到的股票价格执行所有必要的警报操作。
  5. 从返回之前,在下N期onReceive安装另一个。BroadcastReceiverAlarmManager

我想知道,哪种方式更好?除了这2种方法,还有更好的方法吗?在我看来AlarmManager更好,因为我们不需要长时间睡觉,这似乎有点浪费资源?

4

1 回答 1

1

使用AlarmManager触发一个BroadcastReceiver然后BroadcastReceiver启动一个IntentService

ABroadcastReceiver不应该做任何长时间运行的任务,但它可以开始Service做工作。An IntentService(which extends Service) 将在工作线程上工作,然后自行终止。

IntentService

扩展 IntentService 类

换句话说,您可以结合您正在考虑的两种方式,但无需持续运行Service.

于 2012-12-14T06:13:31.267 回答