Android中后台作业,数据从后台到前台
我有一个应用程序需要跟踪我的位置,在执行此操作时读取传感器,并使用信息(即我的当前速度)更新活动。该活动还有一个“停止”按钮,允许用户取消后台作业。如果用户导航离开,数据收集应该继续,通知应该允许用户返回显示信息的视图 到目前为止,我已经:Android中后台作业,数据从后台到前台,android,android-service,Android,Android Service,我有一个应用程序需要跟踪我的位置,在执行此操作时读取传感器,并使用信息(即我的当前速度)更新活动。该活动还有一个“停止”按钮,允许用户取消后台作业。如果用户导航离开,数据收集应该继续,通知应该允许用户返回显示信息的视图 到目前为止,我已经: 服务 它有一个私有静态MyService实例字段和一个getter 它在onStartCommand(…) 它还有一个当前数据的getter(包装在对象中) 它提供了一个goForeground()方法,该方法调用startForeground(…)并显
- 服务
- 它有一个
字段和一个getter私有静态MyService实例
- 它在
onStartCommand(…)
- 它还有一个当前数据的getter(包装在对象中)
- 它提供了一个
方法,该方法调用goForeground()
并显示通知(startForeground(…)
则相反)goBackground()
- 它有一个
- 活动
- 调用
中的onCreate(…)
,如果返回null,则使用MyService.getInstance()
startService(someIntent)
- 一种
方法,它从服务中提取数据,并使用处理程序安排对自身的调用,以每500毫秒更新一次视图updateViews()
- 调用
getInstance()
的返回值的所有调用都被包装在一个NOTNULL检查中。此外,所有工作都发生在UI线程中(当我向服务添加更多计算时,这肯定会导致问题)。另外,我想去掉轮询服务以获取数据的活动
推荐的方法是什么?
Android文档在这一点上不是很清楚,我在谷歌找到的所有东西要么已经过时,要么已经解决了不同的问题。请记住:
- 我的背景工作基本上是无止境的,不会在某个时间点“完成”。只有用户可以决定这一点(这是否排除了异步任务?)
- 我需要将一些非原始日期从背景传递到前景
- 我需要控制活动的背景
- 如果活动已关闭并重新打开,则它应该能够“重新连接”到后台