【问题标题】:Android sleep mode and LocationManagerAndroid 睡眠模式和 LocationManager
【发布时间】:2016-08-28 16:52:33
【问题描述】:

在我的应用中,用户可以启动一个跟踪服务,该服务使用 LocationManager 每 X 秒请求一次位置。

一位用户报告说,在他的设备 (Galaxy Tab S2) 上,当设备进入睡眠模式时,跟踪会在几分钟后停止。

我有两个问题:

  • 有没有办法让我的设备进入睡眠模式(用于测试)?
  • 使用部分唤醒锁会有什么影响?在我的设备上,cpu 似乎并没有进入睡眠状态,所以我想不会有影响,对吗?还是我需要使用 AlarmManager,每 x 秒手动获取一次位置(顺便说一下,这应该是 LocationManager 的一个选项......)?

【问题讨论】:

  • 据我所知,位置管理器在请求位置更新时会自行获取唤醒锁,关于位置跟踪停止可能与您的服务因某种原因被 android 系统杀死有关。您是否正确处理服务停止,例如再次启动服务或使用警报管理器在服务被 android 系统杀死时保持服务正常
  • 我的服务很粘,我已经看到它被杀死并自动重启。您确定 LocationManager 使用唤醒锁吗?根据我在网上找到的,它没有。

标签: android alarmmanager locationmanager wakelock sleep-mode


【解决方案1】:

1) 有没有办法让我的设备进入睡眠模式(用于测试)?

是的,通过使用 PowerManager。阅读here。 不要忘记包含以下权限。

android.permission.DEVICE_POWER

this 中建议了一种简单的方法,因此使用Device Administration 回答希望可以解决您的问题。

2) 我建议您通过this github 项目了解如何有效地使用Partial Wakelock 和Alarmmanager 来获取位置。这是一个很好的起点,您应该能够获得很多关于如何继续的好提示。

【讨论】:

  • 你能详细说明#1吗?您是否指的是此处所述的 goToSleep 方法:stackoverflow.com/questions/9734353/…?我在文档和 Android Studio 中都找不到这种方法。感谢您推荐这个项目,如果我决定选择 AlarmManager 选项可能会有所帮助。
  • @TimAutin 我已经编辑了#1 的答案,我希望这会有所帮助,如果它有效,请告诉我。问候
  • 谢谢,我会在周末检查并通知您(我现在正在做另一个项目)!
猜你喜欢
  • 2022-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-11
  • 2016-05-17
  • 1970-01-01
  • 2017-06-25
  • 2020-06-15
相关资源
最近更新 更多