Leakcanary: Как регистрировать утечки памяти с помощью пользовательского регистратора?Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Leakcanary: Как регистрировать утечки памяти с помощью пользовательского регистратора?

Сообщение Anonymous »

Я начал использовать Leakcanare в моем приложении.
на основе различных источников, я обнаружил, что с этой зависимостью: < /p>
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.14'
< /code>
Проседает личинки Следующие компоненты по умолчанию:
active, фрагменты (оба Androidx.fragment.app.fragment и Android.app.fragment), ViewModels, службы, вещательные приемники (особенно динамически зарегистрированные) и View Cools. Итак, я написал следующий код: < /p>
private void setLeakCanaryData() {
if (BuildConfig.DEBUG) {
LeakCanary.Config oldConfig = LeakCanary.getConfig();
List newEventListeners = getEventListeners(oldConfig);
LeakCanary.Config newConfig = new LeakCanary.Config(
oldConfig.getDumpHeap(),
oldConfig.getDumpHeapWhenDebugging(),
oldConfig.getRetainedVisibleThreshold(),
oldConfig.getReferenceMatchers(),
oldConfig.getObjectInspectors(),
oldConfig.getOnHeapAnalyzedListener(),
oldConfig.getMetadataExtractor(),
oldConfig.getComputeRetainedHeapSize(),
oldConfig.getMaxStoredHeapDumps(),
oldConfig.getRequestWriteExternalStoragePermission(),
oldConfig.getLeakingObjectFinder(),
oldConfig.getHeapDumper(),
newEventListeners,
oldConfig.getShowNotifications(),
oldConfig.getUseExperimentalLeakFinders()
);
LeakCanary.setConfig(newConfig);
}
}

private static @NonNull List getEventListeners(LeakCanary.Config oldConfig) {
List newEventListeners = new ArrayList(oldConfig.getEventListeners());
newEventListeners.add(event -> {
if (event instanceof EventListener.Event.HeapAnalysisDone) {
HeapAnalysis analysis = ((EventListener.Event.HeapAnalysisDone) event).getHeapAnalysis();

if (analysis instanceof HeapAnalysisSuccess) {
HeapAnalysisSuccess success = (HeapAnalysisSuccess) analysis;

for (ApplicationLeak leak : success.getApplicationLeaks()) {
sendLogInfo("Application Leak: " + leak.toString());
}

for (LibraryLeak leak : success.getLibraryLeaks()) {
sendLogInfo("Library Leak: " + leak.toString());
}
} else if (analysis instanceof HeapAnalysisFailure) {
HeapAnalysisFailure failure = (HeapAnalysisFailure) analysis;
sendLogInfo("Heap analysis failed: " + failure.getException().getMessage());
}
}
});
return newEventListeners;
}
< /code>
Мои вопросы: < /p>

Это правильный и рекомендуемый способ записи утечек памяти с использованием

leakcanary? /> < /li>
< /ol>
Любая помощь или предложения приветствуются. Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/797 ... tom-logger
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»