Android,位置请求,设置到期时间不起作用

Hes*_*sam 8 gps android android-location

我正在使用在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);
Run Code Online (Sandbox Code Playgroud)

当我运行应用程序时,卫星指示器将显示在托盘中,所以我希望它只需10秒钟.然而,它会在一分钟后消失.

任何建议或意见将不胜感激.谢谢.

Sor*_*rer 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);
        }
    };
Run Code Online (Sandbox Code Playgroud)

在您请求位置更新(最长持续时间为 10 秒)后,您调用此 Handler,当然会延迟 10 秒。

myLocationClient.requestLocationUpdates(...);
listHandler.sendEmptyMessageDelayed(0, 10000);
Run Code Online (Sandbox Code Playgroud)

这可以确保 10 秒后您的位置更新将被删除。