gpt4 book ai didi

android - 为 android requestSingleUpdate 设置超时

转载 作者:IT王子 更新时间:2023-10-28 23:29:41 35 4
gpt4 key购买 nike

我正在使用 android LocationManager 的例程 requestSingleUpdate() 重例程带有 LocationListener 的库.我正在尝试实现的功能是用户可以按下按钮,应用程序将获取他们的当前位置并执行反向地理编码以获取大致地址。

我的问题是,根据设备的网络情况,获取位置修复可能需要很长时间。如何实现一个超时,导致我的“requestSingleUpdate()”放弃并告诉用户找出他们自己的血腥地址?

我的代码:

LocationManager locationManager = (LocationManager)  getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setPowerRequirement(Criteria.POWER_HIGH);

locationManager.requestSingleUpdate(criteria, new LocationListener(){

@Override
public void onLocationChanged(Location location) {
// reverse geo-code location

}

@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub

}

@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub

}

@Override
public void onStatusChanged(String provider, int status,
Bundle extras) {
// TODO Auto-generated method stub

}

}, null);

最佳答案

LocationManager 似乎没有超时机制。但是 LocationManager 确实有一个名为 removeUpdates(LocationListener listener) 的方法您可以使用它来取消指定 LocationListener 上的任何回调。

因此,您可以使用以下伪代码实现自己的超时:

    final LocationManager locationManager
= (LocationManager) getSystemService(Context.LOCATION_SERVICE);

// ...

final LocationListener myListener = new LocationListener() {
//... your LocationListener's methods, as above
}

Looper myLooper = Looper.myLooper();
locationManager.requestSingleUpdate(criteria, myListener, myLooper);
final Handler myHandler = new Handler(myLooper);
myHandler.postDelayed(new Runnable() {
public void run() {
locationManager.removeUpdates(myListener);
}
}, MY_TIMEOUT_IN_MS);

我不确定如果你调用 locationManager.removeUpdates(myListener) 你得到位置之后会发生什么。在调用 removeUpdates 之前,您可能需要检查一下。或者,您可以在回调中的 onLocationChanged 方法中添加类似的内容(也可能添加到其他方法中):

    myHandler.removeCallbacks(myRunnable); // where myRunnable == the above Runnable 

关于android - 为 android requestSingleUpdate 设置超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15028923/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com