Я думаю, что код API FusedLocationProvider протекает, как я задал в этом вопросе. Я пытался использовать для обнаружения утечки памяти с помощью LeakCanary, но я не получаю никаких предупреждений об утечке памяти после того, как я поворачиваю свой телефон, также пробовал с планшетом. Код для установки LeakCanary:
public class MyApplication extends Application {
private RefWatcher refWatcher;
@Override
public void onCreate() {
super.onCreate();
if (LeakCanary.isInAnalyzerProcess(this)) {
// This process is dedicated to LeakCanary for heap analysis.
// You should not init your app in this process.
return;
}
refWatcher = LeakCanary.install(this);
// Normal app init code...
Log.d("TAG", "MyApplication onCreate()");
}
}
Я пытался более 20 раз, но 2 раза я получил уведомление от LeakCanary, даже не поворачивая телефон, но утечка памяти, которая должна произойти после поворота устройства.
У меня также есть еще один вопрос, почему создаются новые экземпляры MainActivity, даже если не происходит утечки памяти и нет ссылок на эти MainActivities.
Устройство поворачивается 2 раза без запуска обновлений местоположения:
Устройство поворачивается 2 раза после запуска обновления местоположения:
Почему происходят утечки памяти, если обновления местоположения остановлены onPause()
методом stopLocationUpdates()
?
Почему LeakCanary не обнаруживает эти утечки?