0

I want to create an Android app which updates alarm (using AlarmManager) based on user location. As user moves 100 miles away, the alarm will be rescheduled. This app is like a scheduler app.

To solve the problem, I create a location listener which never be removed. My questions are:

  1. Will it eat my battery? I need the alarm is up-to-date with current user location.
  2. Do I have to set my application always in wake mode (wake lock)?
  3. If my solution is not good, what's your suggestion?

Thank you so much!

4

1 回答 1

0

它会吃我的电池吗?我需要警报与当前用户位置保持同步。

是的,并且不能保证您的应用会及时收到位置更新(例如,如果设备处于睡眠状态)。

我是否必须将我的应用程序始终设置为唤醒模式(唤醒锁定)?

持有 aWakeLock将有助于保持您的应用程序运行,但它会很快耗尽电池 - 特别是如果您正在跟踪数百英里之外的用户。

如果我的解决方案不好,您有什么建议?

请考虑使用 AlarmManager 定期检查设备位置。每 15-30 分钟处理一次警报所消耗的电池电量要比使用全时位置监听器少得多。每次警报触发时,您都可以注册和取消注册位置监听器。只要应用程序WakeLock在处理每个警报时获取一个时间(并在之后立即释放锁定),应用程序就会定期接收位置更新并且不会耗尽电池。您可能希望将WakefulIntentService视为处理警报和 WakeLock 的解决方案。

于 2012-10-01T02:43:40.750 回答