
3.1 最佳的初始化
distanceFilter
只要设备的移动超过了最小的距离, 距离过滤器就会导致管理器对委托对象的 LocationManager:didUpdateLocations:事件通知发生变化,该距离单位是 M
desiredAccuracy
精度参数的使用直接影响了使用天线的个数, 进而影响了对电池的消耗.精度级别的选取取决于应用的具体用途,精度是一个枚举 我们应该依照不同的需求去恰当的选取精度级别
距离过滤器只是软件层面的过滤器,而精度级别会影响物理天线的使用.当委托方法 LocationManager:didUpdateLocations:被调用时,使用距离范围更广泛的过渡器只会影响间隔.另一方面,更高的精度级别意味着更多的活动天线,这会消耗更多的能量
3.2 关闭无关紧要的特性
判断何时需要跟踪位置的变化, 在需要跟踪的时候调用 startUpdatingLocation方法, 无须跟踪时调用stopUpdatingLocation方法.
当应用在后台运行或用户没有与别人聊天时,也应该关闭位置跟踪,也就说说,浏览媒体库,查看朋友列表或调整应用设置时, 都应该关闭位置跟踪
3.3 只在必要时使用网络
为了提高电量的使用效率, IOS 总是尽可能地保持无线网络关闭.当应用需要建立网络连接时, IOS 会利用这个机会向后台应用分享网络会话, 以便一些低优先级能够被处理, 如推送通知, 收取电子邮件等
关键在于每当用户建立网络连接时,网络硬件都会在连接完成后多维持几秒的活动时间.每次集中的网络通信都会消耗大量的电量
要想减轻这个问题带来的危害,你的软件需要有所保留的的使用网络.应该定期集中短暂的使用网络,而不是持续的保持着活动的数据流.只有这样,网络硬件才有机会关闭
3.4 后台定位服务
CLLocationManager提供了一个替代的方法来位置的更新. [self.manager startMonitoringSignificantLocationChanges]可以帮助你在更远的距离跟踪运动.精确的值由内部决定,且与distanceFilter无关
使用这一模式可以在应用进入后台后继续跟踪运动,典型的做法是在应用进入后台时执行startMonitoringSignificantLocationChanges方法,而当应用回到前台时执行startUpdatingLocation 如下代码
- (void)applicationDidEnterBackground:(UIApplication *)application {
[self.manager stopUpdatingLocation];
[self.manager startMonitoringSignificantLocationChanges];
}
- (void)applicationWillEnterForeground:(UIApplication *)application {
[self.manager stopMonitoringSignificantLocationChanges];
[self.manager startUpdatingLocation];
}
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shumachanpin/article-76047-3.html
加油
查一查什么原因
到时候什么国际法