嵌入式设备上下文中的前台传感器服务

时间:2014-03-12 20:16:23

标签: android service

问题:
嵌入式设置中持久/永远在线传感器数据收集服务的最佳实践是什么?永久连接的电源,没有用户加重其他正在运行的服务,因此没有电池寿命或可用性问题。

安排:
Service开始,本地startForeground()START_STICKYPARTIAL_WAKE_LOCK可能会获得BOOT_COMPLETED。这不是Play商店应用程序。我将有一个活动可以绑定到服务以获得反馈,设置首选项,并在需要时手动启动/停止服务。由于这将在没有用户界面的专用设备上运行,并且不依赖于电池电源,这应该绕过服务的大多数常见问题,我还能做什么,以确保服务以高优先级运行最不可能被杀的机会最少?有没有比以这种方式实施的服务更好的选择?


背景(可选阅读):
我编写了一个基于活动的多线程应用程序,它在启动完成后通过广播接收器启动,运行验证,运行数据收集线程,连接到远程服务的数据传输线程,并执行其他任务与此讨论相关。我需要转换到基于服务的解决方案。根据我的阅读,收集传感器数据的服务的最佳实践通常涉及通过AlarmManager定期启动服务。这不适用于我的情况。

1 个答案:

答案 0 :(得分:0)

一般来说,Service接收传感器数据没有问题。但是,请确保您正在处理后台线程而不是SensorListener回调中的任何数据。如果您需要在屏幕关闭时继续接收数据,则需要保持部分唤醒锁以防止系统进入低功耗状态。电池寿命受到"前景"的影响。服务只是因为您在某个时间间隔内激活了传感器。否则,除了被框架杀死的可能性很小之外,服务被视为前景并不神奇。

您可能还需要确保传感器的准确性不会发生变化(通过监听器回调),如果它与您的算法所期望的不同,则您必须重新配置它SensorManager。基于Activity的解决方案确实无法实现您所说的内容,因为Activity只是"正在运行"当它对用户可见时。