Android,位置请求,设置过期时间不起作用
Posted
技术标签:
【中文标题】Android,位置请求,设置过期时间不起作用【英文标题】:Android, Location Request, set expiration duration doesn't work 【发布时间】:2013-05-30 08:06:20 【问题描述】:我正在使用 I/O 2013 中引入的新位置 API。
它工作正常,我对它的结果没有任何问题。我的问题是当我将 setExpirationDuration(WHATEVER_MILLIS)
设置为任何毫秒时,它可以工作一分钟。
这是我的代码:
LocationRequest locationRequest = LocationRequest.create()
.setInterval(10 * 60 * 1000) // every 10 minutes
.setExpirationDuration(10 * 1000) // After 10 seconds
.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
当我运行该应用程序时,卫星指示器将显示在托盘中,因此我预计只需 10 秒即可看到它。但是,它会在一分钟后消失。
任何建议或 cmets 将不胜感激。谢谢。
【问题讨论】:
也许间隔时间除以到期时间剩下1分钟 谢谢JRowan,无论我设置什么,毫卫星指示器都会显示一分钟。 您是否认为它的优先级高准确度,gps 需要一点时间才能找到准确的位置,可能会覆盖过期 根据 Google 在其文档页面 (developer.android.com/reference/com/google/android/gms/location/…) 中提到的内容,“位置客户端将在请求过期后自动停止更新。”。所以,不知道为什么它不会停止。但毫无疑问,你是对的。我在覆盖区域。但是这种方法应该阻止它。甚至 setExpirationTime (long millis) 方法也不能正常工作;( 我阅读了链接,它说它包含的 elapsedrealtime 是多少,也许在它说你可以设置一个小于 elapsedrealtime 的时间的间隔上增加 10 秒,也许 1 分钟是默认的因为它没有意义 【参考方案1】:由于它在 Android 中似乎是一个真正的问题,因此一种解决方法可能是手动删除位置更新的处理程序。
listHandler = new Handler()
public void handleMessage(Message msg)
if (msg.what == 0)
mLocationClient.removeLocationUpdates(MyActivity.this);
//Location Updates are now removed
super.handleMessage(msg);
;
在您请求位置更新后(最长持续时间为 10 秒),您调用此 Handler,当然会延迟 10 秒。
myLocationClient.requestLocationUpdates(...);
listHandler.sendEmptyMessageDelayed(0, 10000);
这可确保在 10 秒后删除您的位置更新。
【讨论】:
【参考方案2】:在文档中 (https://developer.android.com/reference/com/google/android/gms/location/LocationRequest.html#setExpirationDuration(long))
它说: “持续时间立即开始(而不是在将请求传递给定位客户端时),因此如果稍后重新使用请求,请再次调用此方法。”
人们会期望这个持续时间在调用以下行时开始:
LocationServices.FusedLocationApi.requestLocationUpdates(googleApiClient, request, this);
但是,文档说明此持续时间从创建请求对象时开始。
【讨论】:
以上是关于Android,位置请求,设置过期时间不起作用的主要内容,如果未能解决你的问题,请参考以下文章
nginx add_header Set-Cookie 过期不起作用
融合的位置提供程序 setsmallestDisplacement 在 Android 中不起作用
Thinkphp 对session有效期的设置为啥总不起作用