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 过期不起作用

Android WebView 地理位置不起作用

融合的位置提供程序 setsmallestDisplacement 在 Android 中不起作用

Thinkphp 对session有效期的设置为啥总不起作用

SendGrid API 密钥不起作用。 “提供的授权授权无效、过期或撤销”

Android 位置管理器不起作用