gpt4 book ai didi

android - 当设备进入休眠状态时,位置管理器是否继续工作?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:51:27 30 4
gpt4 key购买 nike

当 bool 标志设置为 true 时,我的应用程序在后台请求更新服务。如果标志设置为 true,那么我将获得一个 PARTIAL_WAKE_LOCK 让我的后台服务运行。 我的问题是:

  • 自从我向位置管理器请求更新(我没有手动请求更新,而是订阅了 locationManager.requestLocationUpdates )... locationManager 是否继续正常工作,即使设备使用 PARTIAL_WAKE_LOCK 进入休眠状态?

  • 我读到有一个 WifiLock -> WIFI_MODE_SCAN_ONLY 我没有获取。由于位置管理器使用 wifi 扫描通过 wifi 热点检测位置,我是否也应该获取它?

  • 设备进入休眠状态时 gps 位置更新如何?

最佳答案

  1. 不,它没有。更多(很好)信息 here ,包括可能的解决方案/技巧。

  2. 关于 1,我必须做出有根据的猜测并说这不会有什么不同

  3. 据我所知,您使用哪个提供商进行更新并没有什么区别,LocationManager.NETWORK_PROVIDERLocationManager.GPS_PROVIDER

有点 OQ 的危险,我有点好奇哪种应用程序需要获取唤醒锁才能保持服务运行。据我所知,拥有唤醒锁并不能确保您的 Service 继续运行。确保 Service 保持运行的唯一方法是将其置于前台(Service.startForeground())。否则系统仍然可能终止该服务,无论它是否请求唤醒锁。也就是说,如果它正在运行,它可以使用 Handler 或其他东西来完成它。

如果您正在使用这种方法,并且我认为您是基于场景,我建议您不要这样做。基本上你正在创建一个服务,让它在前台运行(猜测)并且你正在获取一个唤醒锁只是为了在屏幕关闭时请求位置更新。这似乎有点矫枉过正。

有一种更有效的方法,它的好处是它比 Handler.postAtTimeHandler.postDelayed 的可怕计时更准确:AlarmManager.setRepeating() .将类型设置为 ELAPSED_REALTIME_WAKEUP 或 RTC_WAKEUP,以便在设备休眠时运行,然后当警报事件被触发并由您必须创建的 BroadcastReceiver 接收时,您可以请求更新并处理其他事件。

如果您没有使用 Handler,而只是请求位置更新,这种方法可能仍然会更好,因为它不需要您有一个正在运行的 Service 或获取唤醒锁。

似乎LocationManager.addProximityAlert()是去这里的路。这也是有缺陷的(见 1)

顺便提一下类似的问题:Android: GPS location updates when the cellphone is in sleep?

关于android - 当设备进入休眠状态时,位置管理器是否继续工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12063870/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com