我目前正在使用FusedLocationProviderClient
在MainActivity
方法onCreate
中请求位置更新。创建活动后,BroadcastReceiver
注册为位置更新侦听器。但位置更新仍然在晚上继续,因为我不从接收器删除位置更新,但我不需要在晚上更新,因为他们通常在家里。我希望在晚上10点从接收器中删除更新,并在每天早上6点重新开始接收位置更新。我认为AlarmManager
就足够了,但我找不到合适的方法来处理这个问题。我可以忽略接收器中的夜间更新,但我认为这不是一个电池效率高的解决方案。
摘要
requestLocationUpdates(...)
)在后台处理更新时请求位置更新removeLocationUpdates(...)
)答案 0 :(得分:0)
不要以为10PM是活动最少的时间。相反,您可以使用Activity Recognition API和JobDispatcher
等触发器来获取没有移动时以及何时再次开始移动。可能值得一看。
看看JobDispatcher
API。虽然JobDispatcher
在AlarmManager
以上的Android系统上受到青睐,但AlarmManager
可能仍有效,但确实有一些不错的功能,例如指定仅在有互联网连接时执行操作。如果您的Android SDK定位低于5.0(API 21)(您可能是),请使用Firebase JobDispatcher
。
这样您就可以一次获得更新,处理国际时差,并能够指定等待互联网连接等事情。它非常强大!