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