【问题标题】:Android background services best practiseAndroid 后台服务最佳实践
【发布时间】:2016-03-30 09:41:34
【问题描述】:

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

我的麻烦是了解最好的方法。我最初是从 ActivityRecognition sample app 开发的。我的流程如下:

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

这样做的一个明显问题是,虽然定位服务在后台运行,即使 MainActivity 已触发 onPause,但 ActivityRecognition 和文件记录器都没有作为服务在后台运行,因此需要 MainActivity 运行。

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

【问题讨论】:

    标签: java android gps activity-recognition


    【解决方案1】:

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

    【讨论】:

    • 澄清一下 - 你是说将 ActivityRecognition 代码移动到位置服务吗?两者都在一个服务下运行,然后在需要更新 GUI 时通过广播将“事件”发送到 MainActivity?这是实现这一目标的最佳/常见方式吗?
    • 不...我可以有多个服务...为activityRecognition使用意图服务,所以immediatelt它已完成运行它的任务..它会自行终止..明白了吗?...并发布一个sn-p 你到目前为止所做的事情......所以我可以更清楚地了解
    猜你喜欢
    • 2015-05-19
    • 2015-08-17
    • 1970-01-01
    • 2010-09-24
    • 2011-12-16
    • 1970-01-01
    • 1970-01-01
    • 2015-07-26
    • 1970-01-01
    相关资源
    最近更新 更多