<lambda>null1 package leakcanary
2 
3 import android.os.Handler
4 import android.os.HandlerThread
5 import leakcanary.EventListener.Event
6 import leakcanary.EventListener.Event.HeapDump
7 import leakcanary.internal.AndroidDebugHeapAnalyzer
8 import leakcanary.internal.InternalLeakCanary
9 
10 /**
11  * Starts heap analysis on a background [HandlerThread] when receiving a [HeapDump] event.
12  */
13 object BackgroundThreadHeapAnalyzer : EventListener {
14 
15   internal val heapAnalyzerThreadHandler by lazy {
16     val handlerThread = HandlerThread("HeapAnalyzer")
17     handlerThread.start()
18     Handler(handlerThread.looper)
19   }
20 
21   override fun onEvent(event: Event) {
22     if (event is HeapDump) {
23       heapAnalyzerThreadHandler.post {
24         val doneEvent = AndroidDebugHeapAnalyzer.runAnalysisBlocking(event) { event ->
25           InternalLeakCanary.sendEvent(event)
26         }
27         InternalLeakCanary.sendEvent(doneEvent)
28       }
29     }
30   }
31 }
32