ces*_*max 4 android sleep locationmanager wakelock
当布尔标志设置为true时,我的应用程序请求在后台服务中进行更新.如果flag设置为true,那么我获取一个PARTIAL_WAKE_LOCK让我的后台服务运行.我的问题是:
因为我从位置管理器请求更新(我不手动请求更新但订阅locationManager.requestLocationUpdates)...即使设备进入睡眠状态,locationManager是否仍然正常/正常工作PARTIAL_WAKE_LOCK?
我读过有一个WifiLock -> WIFI_MODE_SCAN_ONLY我没有收购的.由于位置管理器使用wifi扫描通过wifi热点检测位置,我也应该获得这个吗?
设备进入睡眠状态时gps位置更新怎么样?
不,不是的.更多(非常好)的信息在这里,其中包括可能的解决方案/黑客.
关于1,我必须做出有根据的猜测并说它不会有所作为
从我可以收集到的内容来看,您使用哪个提供商进行更新并没有什么区别,LocationManager.NETWORK_PROVIDER或者LocationManager.GPS_PROVIDER.
有点OQ的危险,我有点好奇哪种应用程序需要获取唤醒锁以保持服务运行.据我所知,使用唤醒锁并不能确保您Service继续运行.确保Service持续运行的唯一方法是将它放在foreground(Service.startForeground())中.否则系统仍可能终止服务,无论它是否获得唤醒锁定.话虽这么说,如果它正在运行,它可以用一个Handler或者什么来做它.
如果您正在使用这种方法,并且我认为您基于该方案,我会建议不要这样做.基本上你正在创建一个服务,让它在前台运行(猜测)你正在获取唤醒锁定只是为了在屏幕关闭时请求位置更新.这似乎有点矫枉过正.
有一种更有效的方法,它具有的优点是更准确的时序,然后是可怕的时间Handler.postAtTime或Handler.postDelayed:AlarmManager.setRepeating().将类型设置为ELAPSED_REALTIME_WAKEUP或RTC_WAKEUP,以便在设备休眠时运行,然后当警报事件被触发并由BroadcastReceiver您必须创建的接收时,您可以请求更新并处理其他事件.
如果您没有使用Handler,但仅仅是请求位置更新,这种方法可能会更好,因为它不需要您运行Service或获取唤醒锁定.
这似乎LocationManager.addProximityAlert()是走到这里的方式.哪个也有缺陷(见1)
类似的问题顺便提一下:Android:手机处于睡眠状态时GPS位置会更新吗?
| 归档时间: |
|
| 查看次数: |
7739 次 |
| 最近记录: |