- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在考虑设置两个单独的警报来每小时收集用户的位置数据,一个警报每 59 分钟响一次以“连接”客户端,另一个警报实际获取位置然后断开客户端连接。
就电池生命周期而言,如果获取用户位置将成为应用程序的主要消耗,我是否应该考虑做其他事情?或者,是否有不同的方法来设置两个警报?我最初只有一个警报,但执行 (!mLocationClient.isConnected) 然后连接检查没有给客户端足够的时间进行连接。
感谢您的见解。
这两个警报会像这样响起:
private int PERIODIC_UPDATE = 60000*60; //gets location and disconnects every hour
private int PERIODIC_RECONNECTION_UPDATE = 60000*59; //connects 1 minute before getLocation call
Timer toReconnect = new Timer();
toReconnect.schedule(new TimerTask() {
@Override
public void run() {
mLocationClient.connect();
}
}, 5000, PERIODIC_RECONNECTION_UPDATE);
Timer theTimer = new Timer();
theTimer.schedule(new TimerTask(){
@Override
public void run() {
try {
if(!mLocationClient.isConnected()) {
mLocationClient.connect();
//This will not have much affect because cannot so quickly, will remove.
}
Location theLocation = mLocationClient.getLastLocation();
if(theLocation!=null) {
checkPostLocation(theLocation);
mLocationClient.disconnect();
}
} catch (Exception e) {
e.printStackTrace();
}
}}, 5000, PERIODIC_UPDATE);
最佳答案
请参阅 Android 开发人员文档中的“接收位置更新”部分,以获取有关此主题与新的 Fused LocationProvider 的详细讨论:
http://developer.android.com/training/location/receive-location-updates.html
这使您可以选择将带有 LocationListener 的 Intent 注册到 Fused LocationProvider,当内部 Google 服务框架认为这样做“有效”时,它会自动触发。我相信这个框架在优化电源使用方面具有更大的潜力,因为与应用程序注册的计时器相比,它对系统中发生的其他事情有更多的了解。
以下是注册具有不同电源优先级的监听器的选项,这将导致不同级别的电池消耗,如上述文档中所列:
关于android - 使用 LocationClient 定期获取更新的最省电的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17139866/
我在 C# 中有一个轮询循环,需要在 上每 100 微秒轮询一次。平均 (当然,考虑到没有因内核短缺而由Windows进行过多的抢占式线程上下文切换)。 由于没有时间重新安排,Sleep(1) 不会这
注意:事实证明,原始问题的假设是不正确的。在底部查看有关其编辑的更多详细信息。 现在是关于节电模式,而不是节电模式和打盹模式。它也不是关于 Service&BroadcastReceiver,而只是
我是一名优秀的程序员,十分优秀!