в одном из моих занятий я использую FusedLocationProviderClient для получения постоянного обновления местоположения. Мои коды основаны на этом методе: https://developer.android.com/training/location/receive-location-updates
В моем onCreate я настраиваю провайдера и обратные вызовы
// 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;
}
}
};
В резюме
mFusedLocationProviderClient.requestLocationUpdates(mLocationRequest,
mLocationCallback,
Looper.myLooper());
Вкл. Пауза
mFusedLocationProviderClient.removeLocationUpdates(mLocationCallback);
И все же по какой-то причине утечка канарейки все еще указывает на утечку памяти. Утечка канарейка, показанная ниже
Просматривая информацию о переполнении стека, есть сообщения, которые, похоже, предполагают, что утечка связана с сервисом Google Play. Но эти посты говорили о fusedLocationApi, в то время как я использую fusedLocationProviderClient, поэтому я не уверен, что это то же самое, что я использую здесь. Кто-нибудь может подтвердить для меня? Спасибо!