July 30, 2016
Полезная библиотека от Square для поиска утечек памяти в андроид приложении. Подключаем зависимости в build.gradle
dependencies {
debugCompile 'com.squareup.leakcanary:leakcanary-android:1.4-beta2'
releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.4-beta2'
testCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.4-beta2'
}
добавляем инициализацию в Application класс приложения
public class ExampleApp extends Application {
@Override public void onCreate() {
super.onCreate();
LeakCanary.install(this);
}
}
и все готово. Этого достаточно для базовой настройки библиотеки. LeakCanary при запуске приложения будет следить за возможными утечками activity (по умолчанию) и предупреждать о них. Изображение взято с github авторов библиотеки
Также библиотека позволяет отслеживать любые объекты вашего приложения на возможные утечки (например fragment-ы). Для этого необходимо дописать код Application класса:
public class ExampleApp extends Application {
private RefWatcher refWatcher;
public static RefWatcher getRefWatcher(Context context) {
ExampleApp app = (ExampleApp) context.getApplicationContext();
return app.refWatcher;
}
@Override public void onCreate() {
super.onCreate();
refWatcher = LeakCanary.install(this);
}
}
затем в fragment-е добавить следующее:
public class ExampleFragment extends Fragment {
...
@Override public void onDestroy() {
super.onDestroy();
Context context = getContext();
if (context != null) {
ExampleApp.getRefWatcher(context).watch(this);
}
}
...
}
Written by Alex - android developer,
react-native learning, PS4 gamer, music lover.