当两个 locationManager 对象调用 requestLocationUpdates(...) 时?

Posted

技术标签:

【中文标题】当两个 locationManager 对象调用 requestLocationUpdates(...) 时?【英文标题】:When two locationManager objects call requestLocationUpdates(...)? 【发布时间】:2012-03-23 14:39:04 【问题描述】:

代码是这样的:

private LocationManager locationManager1;
private LocationManager locationManager2;    
......
locationManager1 =(LocationManager)getSystemService(Context.LOCATION_SERVICE);
locationManager2 =(LocationManager)getSystemService(Context.LOCATION_SERVICE);    
....
locationManager1.requestLocationUpdates("GPS",30000, 0, LbsClient2ServerDemo.this);

locationManager2.requestLocationUpdates("GPS",0, 0, LbsClient2ServerDemo.this);    
......

当两个 locationManager 对象调用 requestLocationUpdates(...) 时, locationManager1 和 locationManager2 有 GPS 提供程序。

locationManager1 对象现在正在搜索卫星,但是 locationManager2 来了,locationManager2.requestLocationUpdates() 会中断 locationManager1 吗?也许它会导致 GPS 定位更慢?

【问题讨论】:

【参考方案1】:

您不必创建 LocationManager 的两个对象。

使用这种方式获取所有可用的提供者并从他们那里获得修复,onLocationChanged() 返回的修复将是 LocationManager 可以获得的更好的。

List<String> providers = locationManager.getProviders(true);
for (String provider : providers) 
    locationManager.requestLocationUpdates(provider, 0, 0, this);

【讨论】:

以上是关于当两个 locationManager 对象调用 requestLocationUpdates(...) 时?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 LocationManager 会多次调用 startUpdatingLocation?

不能调用 locationManager(_::didUpdateLocations:)

LocationManager.getLastKnownLocation() 返回 null,并且永远不会调用 onLocationChanged

locationManager:didFailWithError: 如果用户位置服务关闭,则不调用

locationmanager didenterregion 没有被调用

locationManager:didExitRegion: 应用程序运行时未调用