我希望长时间(3-4小时)从服务中每3分钟收到一次gps数据。 这一切都很好,但我有一些问题,哪种方法最适合电池寿命。
启动服务,在服务的onCreate内创建一个部分唤醒锁,启动一个每3分钟执行一次的计时器。从计时器内部获取位置数据。当服务停止时(3-4小时后)释放唤醒锁。
使用AlarmManager每3分钟启动一次服务。在服务内部创建部分唤醒锁,获取位置数据,然后释放唤醒锁并停止服务。
与#1相同,但通过requestLocationUpdates()方法设置intervall而不是计时器。 (我不喜欢这种方法的原因是,当我使用计时器时,我可以获得5个位置(每3分钟)并选择最准确的但是当我使用requestLocationUpdates()设置intervall时我只获得一个位置,哪个可能不准确,或者我错了?)
我不喜欢将部分唤醒锁留在3-4小时的想法,这就是为什么我认为#2可能是更好的解决方案。
答案 0 :(得分:5)
// 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; // 1 sec
LocationManager locationManager; locationManager = (LocationManager) mContext.getSystemService(LOCATION_SERVICE); locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, MIN_TIME_BW_UPDATES, MIN_DISTANCE_CHANGE_FOR_UPDATES, this);