- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
当 bool 标志设置为 true 时,我的应用程序在后台请求更新服务。如果标志设置为 true,那么我将获得一个 PARTIAL_WAKE_LOCK
让我的后台服务运行。 我的问题是:
自从我向位置管理器请求更新(我没有手动请求更新,而是订阅了 locationManager.requestLocationUpdates
)... locationManager 是否继续正常工作,即使设备使用 PARTIAL_WAKE_LOCK
进入休眠状态?
我读到有一个 WifiLock -> WIFI_MODE_SCAN_ONLY
我没有获取。由于位置管理器使用 wifi 扫描通过 wifi 热点检测位置,我是否也应该获取它?
设备进入休眠状态时 gps 位置更新如何?
最佳答案
不,它没有。更多(很好)信息 here ,包括可能的解决方案/技巧。
关于 1,我必须做出有根据的猜测并说这不会有什么不同
据我所知,您使用哪个提供商进行更新并没有什么区别,LocationManager.NETWORK_PROVIDER
或 LocationManager.GPS_PROVIDER
。
有点 OQ 的危险,我有点好奇哪种应用程序需要获取唤醒锁才能保持服务运行。据我所知,拥有唤醒锁并不能确保您的 Service
继续运行。确保 Service
保持运行的唯一方法是将其置于前台(Service.startForeground()
)。否则系统仍然可能终止该服务,无论它是否请求唤醒锁。也就是说,如果它正在运行,它可以使用 Handler
或其他东西来完成它。
如果您正在使用这种方法,并且我认为您是基于场景,我建议您不要这样做。基本上你正在创建一个服务,让它在前台运行(猜测)并且你正在获取一个唤醒锁只是为了在屏幕关闭时请求位置更新。这似乎有点矫枉过正。
有一种更有效的方法,它的好处是它比 Handler.postAtTime
或 Handler.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/
我有一个 powershell 进程,它从远程服务器读取记录并将它们复制到本地数据库中。运行时,它可能会运行 8-12 小时。 如何防止计算机在此期间关闭(或进入休眠/休眠模式)?我知道我可以调整“电
是否有一些命令行或 AppleScript 可以编写/运行以使机器自动进入休眠状态,甚至更好地进入休眠模式? 我可以以 root 身份运行该程序。 最佳答案 osascript -e 'tell ap
我是一名优秀的程序员,十分优秀!