使用 AlarmManager 监控 IntentService 或使用 Thread 监控服务

Monitoring IntentService with AlarmManager or Service with Thread

我正在构建一个监控应用程序,它将尽可能多地从移动设备捕获信息,例如 运行 进程/活动连接/网络统计/活动接口等。显然我需要一个服务将在后台 运行,但我不完全确定如何实现它。

有人建议我创建一个 IntentService,它将使用 AlarmManager 在特定时间间隔执行,执行它的操作然后再次死掉。 In this thread 人们建议使用永远在线的服务来实现,该服务启动自己的线程来完成工作,使其进入休眠状态,然后再次运行。有人还建议也使用 AlarmManager 来确保服务在 OS 终止时重新启动。 监控实时数据最合适的实施是什么? (或每个的 up/downsides)。请注意,我捕获的许多信息不会产生意图(所以我不能只注册接收者)

非常感谢:)

Note that many of the info I'm capturing do not produce intents (so I can't just register receivers)

那么您将无法使用 Intent服务,因为您的应用不知道何时启动它。

如果您想要"real time" 更新信息,那么您将不得不使用服务(有或没有它自己的后台线程)。您不能使用 AlarmManager,因为它几乎总是 运行 为时已晚(而不是 "real time")。

请注意,让您的服务 运行 始终需要一些努力,因为有几种不同的情况可以停止 运行ning,即使您已经尽力而为要实现它,OS 或用户仍然可以通过 运行 停止它。