在我的一个活动中,我正在使用FusedLocationProviderClient来获取持续的位置更新。我的代码基于这种方法:https://developer.android.com/training/location/receive-location-updates
在我的onCreate中,我设置了提供程序和回调函数。
然而,出于某些原因,Leak Canary仍然表明存在内存泄漏。下面是Leak Canary的日志记录:
在Stack Overflow上浏览时,有一些帖子表明泄漏是由Google Play服务引起的。但是这些帖子涉及到fusedLocationApi,而我正在使用fusedLocationProviderClient,所以我不确定它是否与我正在使用的内容相同。能否有人为我确认一下?谢谢!
// setup fused location provider
mFusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this);
// build location request
mLocationRequest = new LocationRequest();
mLocationRequest.setInterval(30000);
mLocationRequest.setFastestInterval(10000);
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
mLocationRequest.setSmallestDisplacement(50);
// Setup the callback function.
mLocationCallback = new LocationCallback() {
@Override
public void onLocationResult(LocationResult locationResult) {
if (locationResult == null) {
return;
}
for (Location location : locationResult.getLocations()) {
// Update UI with location data
// ...
mCurrentLocation = location;
}
}
};
在onResume中
mFusedLocationProviderClient.requestLocationUpdates(mLocationRequest,
mLocationCallback,
Looper.myLooper());
在 onPause 中
mFusedLocationProviderClient.removeLocationUpdates(mLocationCallback);
然而,出于某些原因,Leak Canary仍然表明存在内存泄漏。下面是Leak Canary的日志记录:
![enter image description here](https://istack.dev59.com/Jpxh2.webp)