<lambda>null1 package 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