<lambda>null1package com.example.leakcanary 2 3 import android.os.Process.THREAD_PRIORITY_BACKGROUND 4 import android.util.Log 5 import leakcanary.BackgroundTrigger 6 import leakcanary.HeapAnalysisClient 7 import leakcanary.HeapAnalysisConfig 8 import leakcanary.HeapAnalysisJob.Result 9 import leakcanary.LogcatSharkLog 10 import leakcanary.LogcatSharkLog.Companion 11 import leakcanary.ScreenOffTrigger 12 import shark.SharkLog 13 import shark.SharkLog.Logger 14 import java.util.concurrent.Executors 15 import kotlin.concurrent.thread 16 17 class ReleaseExampleApplication : ExampleApplication() { 18 19 override fun onCreate() { 20 super.onCreate() 21 // Useful to debug in release builds. Don't use in real builds. 22 LogcatSharkLog.install() 23 24 val analysisClient = HeapAnalysisClient( 25 heapDumpDirectoryProvider = { cacheDir }, 26 config = HeapAnalysisConfig(), 27 interceptors = HeapAnalysisClient.defaultInterceptors(this) 28 ) 29 30 val analysisExecutor = Executors.newSingleThreadExecutor { 31 thread(start = false, name = "Heap analysis executor") { 32 android.os.Process.setThreadPriority(THREAD_PRIORITY_BACKGROUND) 33 it.run() 34 } 35 } 36 analysisExecutor.execute { 37 analysisClient.deleteHeapDumpFiles() 38 } 39 val analysisCallback: (Result) -> Unit = { result -> 40 SharkLog.d { "$result" } 41 } 42 BackgroundTrigger( 43 application = this, 44 analysisClient = analysisClient, 45 analysisExecutor = analysisExecutor, 46 analysisCallback = analysisCallback 47 ).start() 48 49 ScreenOffTrigger( 50 application = this, 51 analysisClient = analysisClient, 52 analysisExecutor = analysisExecutor, 53 analysisCallback = analysisCallback 54 ).start() 55 } 56 } 57