我想创建一个Android应用程序,根据用户位置更新警报(使用AlarmManager)。当用户移动100英里外,警报将被重新安排。这个应用程序就像一个调度程序应用程序。
为了解决这个问题,我创建了一个永远不会删除的位置监听器。我的问题是:
非常感谢你!
答案 0 :(得分:0)
它会吃掉我的电池吗?我需要警报是与当前用户位置保持同步的。
是的,并且无法保证您的应用会及时收到位置更新(例如,如果设备处于睡眠状态)。
我是否必须始终将应用程序设置为唤醒模式(唤醒锁定)?
持有WakeLock
将有助于保持您的应用运行,但它会非常快速地耗尽电池 - 特别是如果您在数百英里内跟踪用户。
如果我的解决方案不好,您的建议是什么?
请考虑使用AlarmManager定期检查设备位置。每15-30分钟处理一次警报所使用的电池电量远远少于使用全职位置监听器。每次发生警报时,您都可以注册和取消注册位置监听器。只要应用程序在处理每个警报时获得WakeLock
(并在之后立即释放锁定),该应用程序将定期更新位置并且不会耗尽电池电量。您可能希望将WakefulIntentService视为处理警报和WakeLocks的解决方案。