我有一个应用程序,每次用户接近一组位置中的任何一个时都会采取一些(互联网)操作(例如,假设它在我靠近星巴克商店时通知服务器,因此可以分析我的咖啡习惯) .
什么是最省电(但可靠且相对准确)的方式,可以让手机在某个位置时执行某些操作?我不需要完美的定位精度——在 50m 左右就可以了。
目前,我为每个半径为 100m 的位置设置了一个 ProximityAlert,并让它引发一个 Intent,然后由在后台运行的 Service 提供服务。该服务还包括一个警报,每三个小时左右就会下载一次。
服务本身似乎并没有消耗大量电池 - 电池全部被“Android OS”耗尽。根据 Android 4.1.2 电池监视器,Android 操作系统使用的 CPU 是没有我的应用程序的手机的 3 倍,并且大部分时间都“保持清醒”。
将其更改为 IntentService 会有所不同吗?
减少(或增加)警报的半径会有所不同吗?
将其转换为地理围栏(https://developer.android.com/training/location/geofencing.html)会有很大不同吗?
我可以将其设置为使用更便宜的定位服务,除非它认为它靠近某个位置(或者它会自动执行此操作吗?)