我的要求是使用后台服务每10分钟检查一次设备的位置。因此,每10分钟应该发生的事情的基本要点是 -
到目前为止我尝试过做什么 -
我不需要整个代码作为答案,我宁愿欣赏我应该采用的策略,它将满足我的要求,而不会损害电池电量。与我的方法一样,除非并且直到找到位置,否则GPS保持开启,不断地耗尽电池。
答案 0 :(得分:1)
使用FusedLocationAPI和location request代替每10分钟安排一次的闹钟管理器,以获得准确的位置。
<script src="http://gh-canon.github.io/stack-snippet-console/console.min.js"></script>
只要您需要位置
,请调用此方法 LocationRequest mLocationRequest = LocationRequest.create();
mLocationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);//Change to PRIORITY_HIGH_ACCURACY for more accurate.
mLocationRequest.setInterval(600000); // Update location every 10 minute
LocationServices.FusedLocationApi.requestLocationUpdates(
mGoogleApiClient, mLocationRequest, this);
答案 1 :(得分:0)
试试这个
// The minimum distance to change updates in meters
private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10; // 10 meters
// The minimum time between updates in milliseconds
private static final long MIN_TIME_BW_UPDATES = 1000 * 60 * 10; // 10 minute
了解更多信息示例请尝试使用此
答案 2 :(得分:0)
来自LocationListener的onLocationChanged()包含方法 - stopSelf(),以便服务在收到位置后结束。但是,这种方法被称为无数次。我在调试时检查了一下。这是因为onLocationChanged()有很多实例叫做?
基本上,当你收到第一个位置时,也可以通过stopSelf()停止服务。
但onLocationChanged方法如何被多次调用?
在服务关闭时,您不删除位置更新吗?