Android FusedLocationProviderClient突然不再使用位置调用回调
大约两周前,我们的应用程序的几个区域随机停止工作,特别是那些依赖最新位置的区域。这发生在多个设备上,包括真实设备和模拟器。在此之前,它每次都在工作。对我们来说幸运的是,所有停止工作的东西都隐藏在一面旗帜后面,我们能够在生产中禁用它 我们的位置包装器代码两年来几乎没有被触碰过,在最近唯一一次更改(这是微不足道的)后,它在一个月内运行良好。换句话说,两年来它一直在毫无问题地工作。下面是一些片段 现在,在注册接收位置更新后,我们在大部分时间里不再在回调中得到结果。以下是回调和其他相关片段:Android FusedLocationProviderClient突然不再使用位置调用回调,android,location,fusedlocationproviderapi,android-fusedlocation,fusedlocationproviderclient,Android,Location,Fusedlocationproviderapi,Android Fusedlocation,Fusedlocationproviderclient,大约两周前,我们的应用程序的几个区域随机停止工作,特别是那些依赖最新位置的区域。这发生在多个设备上,包括真实设备和模拟器。在此之前,它每次都在工作。对我们来说幸运的是,所有停止工作的东西都隐藏在一面旗帜后面,我们能够在生产中禁用它 我们的位置包装器代码两年来几乎没有被触碰过,在最近唯一一次更改(这是微不足道的)后,它在一个月内运行良好。换句话说,两年来它一直在毫无问题地工作。下面是一些片段 现在,在注册接收位置更新后,我们在大部分时间里不再在回调中得到结果。以下是回调和其他相关片段: pri
private val locationCallback = object : LocationCallback() {
override fun onLocationResult(locationResult: LocationResult?) {
Timber.tag("DERP").d("LocationProviderImpl.onLocationResult: got location; loc=${locationResult?.lastLocation}; thread=${Thread.currentThread().name}")
locationResult ?: return
subject.onNext(locationResult.lastLocation)
}
}
以下是我们正在使用的LIB/版本:
implementation 'com.google.android.gms:play-services-auth:19.0.0'
implementation 'com.google.android.gms:play-services-base:17.5.0'
implementation 'com.google.android.gms:play-services-location:17.1.0'
implementation "com.google.android.gms:play-services-gcm:17.0.0"
还有几件值得注意的事情:
- 回调间歇性地得到结果(可能是15次尝试中的1次)
- 没有押韵,也没有理由解释为什么,他尝试了很多不同的方法,但没有成功
每次都能正常工作,但通常会过时lastLocation
- 首先调用
似乎不会使回调工作得更可靠,正如文档中所示lastLocation
- 这个位置提供者(融合客户端的包装器)曾在应用程序的多个领域使用过,但直到最近,我们才开始在最新功能中更多地使用它
implementation 'com.google.android.gms:play-services-location:17.0.0'
我也有同样的想法,我认为这是17.1.0版本中的一个bug
implementation 'com.google.android.gms:play-services-auth:19.0.0'
implementation 'com.google.android.gms:play-services-base:17.5.0'
implementation 'com.google.android.gms:play-services-location:17.1.0'
implementation "com.google.android.gms:play-services-gcm:17.0.0"
implementation 'com.google.android.gms:play-services-location:17.0.0'