Android 后台服务最佳实践

Android background services best practise

我正在为一个利用 ActivityRecognition API 和 GPS 的小型研究项目开发应用程序。我想要实现的是将 APIs 运行ning 作为后台进程,并定期将当前数据记录在日志文件中。然后可以在收集数据后手动分析此日志文件。

我的问题是了解执行此操作的最佳方法。我最初是从 ActivityRecognition sample app 开发的。我的流程如下:

  1. 当点击 MainActivity 中的按钮时,通过 requestLocationUpdated 创建位置侦听器。同时在 MainAcitivity 中创建 ActivityRecogition 侦听器。
  2. 触发位置更新事件时,通过广播发送数据。
  3. 如果 MainActivity 是 运行ning,通过 broadcastReciever 收听广播,更新 gui,将最后更新存储在 class 范围变量(在 MainActivity 中)
  4. 当 ActivityRecognition 获得更新时,将数据与存储在 MainActivity 中 class 范围变量中的 GPS 数据一起记录在文件中。

这方面的明显问题是,虽然定位服务在后台运行,即使 MainActivity 已暂停,但 ActivityRecognition 和文件记录器都不会 运行 作为服务在后台运行,因此要求 MainActivity 为 运行ning.

为一个目的处理多个后台进程的最佳做法是什么?要创建后台服务来处理这两者?然后 运行 在应用 onCreate/button 上点击这个?然后通过广播消息将数据发送到 MainActivity(如果它在那里监听)?

Kirgy.. 将服务用于 gps 任务和 activityRecognition 使用接收器和每次 activityRecognition 发生时触发广播的意图