java - Android后台服务最佳实践

标签 java android gps activity-recognition

我正在为一个小型研究项目开发一个应用程序,该项目利用 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(如果它可以监听)?

最佳答案

Kirgy.. 将服务用于 GPS 任务,并为 ActivityRecognition 使用接收器和每次 ActivityRecognition 发生时触发广播的 Intent

关于java - Android后台服务最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36305039/

相关文章:

java - Hadoop副本处理

java - 将类的 ArrayList 从 jsp 传递到 servlet

android - Android屏幕左侧的垂直菜单

android - 像 Ola Cabs Android 应用程序一样以编程方式打开 GPS

java - 使用泛型时,RestClient 不会返回精确的未编码对象

java - 如何限制 Activity 的 Spring WebClient 调用次数

android - 为什么 PackageInfo.requestedPermissions 总是空的?

java - 分页数据最多 10 行,使用 recyclerview 中的 load more

android - watchPosition() 只触发回调一次

iPhone GPS 精度 - 即使设备静止,读数也会变化