我现在正在编程一个收集传感器数据的程序,例如acclerometer值一整天。
目前我只使用一个活动并运行活动一整天(我关闭屏幕自动黑屏),并且白天不要做任何短消息或电话。
我听说我可以使用Service在后台制作这种长时间运行的数据收集器。但在我http://code.google.com/p/pedometer/检查了计步器之后。我发现,当屏幕变黑时,计步器不起作用。 (但是,只要电源打开,像预测仪这样的应用在任何情况下都应该起作用。)
虽然我不关心总是感应到测量仪的电源问题,但我确实想要将屏幕变黑以节省电量以记录更多的测量仪数据点。
我正在考虑两种方式:
然而,正如计步器应用所示,使用服务。当屏幕变黑时,服务似乎也停止了工作!也许代码有bug。2.我的申请仍然是一项活动。但我将scrren灯改为0或全黑以节省电量。
我的问题是:1)即使屏幕长时间熄灭,服务仍然能够始终保持运行状态; 2,如何更换屏幕灯?
谢谢!
答案 0 :(得分:6)
尝试通过this,看看是否有帮助。
关于2 - 你应该真的使用(1);)
答案 1 :(得分:3)
您不需要远程服务 - 这可以通过本地Service
完成。
使用命令模式而不是服务的绑定模式,即使用startService()
/ stopService()
而不是bind()
/ unbind()
。
在您的服务onStartCommand()
方法中,返回Service.START_REDELIVER_INTENT
或类似内容,以使服务的有效期超过Activity
。
现在诀窍:为了在手机进入睡眠状态时保持正常的服务处理,您需要使用PowerManager.WakeLock。这些很难做到正确,我不认为这个答案需要完整的解释。
以下是更多信息:
还可以尝试Lars Vogel的博客:Using Android Wakelock – Staying up all night long
对摘要答案表示歉意,但您的问题涉及到一些高级主题方面的问题相当广泛。
答案 2 :(得分:0)
对于大多数情况,可以使用IntentService
实施后台服务。
确保后台服务适用于最新和较早的Android版本,如2.3或2.2。
从Android 4.0开始,设计后台操作是不同的。