LeakCanary 2: Нужно ли вручную смотреть объекты? - PullRequest
1 голос
/ 22 марта 2020

Я только что добавил Leak Canary 2 в свое приложение build.gradle, как описано в официальных документах :

dependencies {
  // debugImplementation because LeakCanary should only run in debug builds.
  debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.2'
}

Теперь, когда я запускаю свое приложение и проверяю logcat, я могу найти

2020-03-22 18:20:31.858 2401-2401/? D/LeakCanary: Installing AppWatcher

чтобы установка работала.

Но это все что мне нужно? Или мне дополнительно нужно смотреть объекты вручную, используя AppWatcher.objectWatcher.watch? Это мне не понятно. В настоящее время LeakCanary не сообщает мне ни о каких проблемах, но я сомневаюсь, что сделал все идеально.

Ответы [ 2 ]

3 голосов
/ 22 марта 2020

Да и нет.

Да, он автоматически обнаружит просочившееся представление Activity, Fragment, Fragment (View, возвращенное методом onCreateView фрагмента) и ViewModel экземпляры (согласно документам для Config и источнику для AndroidXFragmentDestroyWatcher), без необходимости вручную наблюдать за этими объектами.

Нет, это будет не автоматически обнаруживать утечки экземпляров любых других объектов. Для них вам нужно будет смотреть их вручную. Например, этот рецепт из документации описывает, как заставить LeakCanary наблюдать за утечками Service экземпляров.

Также обратите внимание, что если приложение видно, оно не будет вызывать дамп кучи, пока не обнаружит 5 сохраненных объектов. Помещение приложения в фоновый режим приведет к немедленному выполнению дампа, хотя за это время будет отображаться уведомление (docs) .

1 голос
/ 22 марта 2020

Действительно, это так! Или, согласно документам, Вот и все!

Вот и все, изменение кода не требуется! Вы можете подтвердить, что LeakCanary запускается при запуске, отфильтровав тег LeakCanary в Logcat:

D LeakCanary: Installing AppWatcher

Я использовал LeakCanary в производственных проектах (во время разработки). После использования приложения в течение некоторого времени с включенным L C вы получите уведомление с отображением результатов использования. Если вы пропустите это уведомление, вы можете открыть активность утечки из меню ярлыков приложения.

...