1 package leakcanary 2 3 import leakcanary.EventListener.Event 4 import leakcanary.EventListener.Event.HeapAnalysisDone 5 import leakcanary.EventListener.Event.HeapAnalysisProgress 6 import leakcanary.EventListener.Event.HeapDumpFailed 7 import leakcanary.internal.HeapDumpTrigger 8 import leakcanary.internal.activity.screen.LeakTraceWrapper 9 import shark.SharkLog 10 11 object LogcatEventListener : EventListener { 12 onEventnull13 override fun onEvent(event: Event) { 14 when(event) { 15 is HeapDumpFailed -> { 16 if (event.willRetryLater) { 17 SharkLog.d(event.exception) { "Failed to dump heap, will retry in ${HeapDumpTrigger.WAIT_AFTER_DUMP_FAILED_MILLIS} ms" } 18 } else { 19 SharkLog.d(event.exception) { "Failed to dump heap, will not automatically retry" } 20 } 21 } 22 is HeapAnalysisProgress -> { 23 val percent = (event.progressPercent * 100).toInt() 24 SharkLog.d { "Analysis in progress, $percent% done, working on ${event.step.humanReadableName}" } 25 } 26 is HeapAnalysisDone<*> -> { 27 SharkLog.d { "\u200B\n${LeakTraceWrapper.wrap(event.heapAnalysis.toString(), 120)}" } 28 } 29 } 30 } 31 } 32