@@ -29,6 +29,11 @@ import com.alexvanyo.composelife.scopes.ApplicationGraph
2929import com.alexvanyo.composelife.scopes.ApplicationGraphArguments
3030import com.alexvanyo.composelife.scopes.ApplicationGraphOwner
3131import com.alexvanyo.composelife.strictmode.initStrictModeIfNeeded
32+ import com.alexvanyo.composelife.tracing.AbstractTraceDriver
33+ import com.alexvanyo.composelife.tracing.AbstractTraceDriverFactory
34+ import com.alexvanyo.composelife.tracing.Tracer
35+ import com.alexvanyo.composelife.tracing.createTraceDriver
36+ import com.alexvanyo.composelife.tracing.trace
3237import com.alexvanyo.composelife.updatable.Updatable
3338import dev.zacsweers.metro.AppScope
3439import dev.zacsweers.metro.ContributesTo
@@ -49,24 +54,34 @@ internal val ApplicationGraph.composeLifeApplicationCtx: ComposeLifeApplicationC
4954 this as ComposeLifeApplicationCtx
5055
5156@Suppress(" UnnecessaryAbstractClass" , " AbstractClassCanBeConcreteClass" )
52- abstract class BaseComposeLifeApplication <G >(private val createGlobalGraph : () -> G ) :
57+ abstract class BaseComposeLifeApplication <G >(private val createGlobalGraph : (tracer: Tracer ) -> G ) :
5358 Application (),
59+ AbstractTraceDriverFactory ,
5460 ApplicationGraphOwner {
5561 override lateinit var applicationGraph: ApplicationGraph
5662
63+ private val traceDriver by lazy { createTraceDriver(this ) }
64+
65+ override fun create (): AbstractTraceDriver = traceDriver
66+
5767 override fun onCreate () {
5868 super .onCreate()
5969
6070 initStrictModeIfNeeded()
6171 Composer .setDiagnosticStackTraceMode(ComposeStackTraceMode .Auto )
6272
63- val globalGraph = createGlobalGraph()
64- applicationGraph =
73+ val tracer = traceDriver.tracer
74+
75+ val globalGraph = tracer.trace(" startup" , " createGlobalGraph" ) {
76+ createGlobalGraph(tracer)
77+ }
78+ applicationGraph = tracer.trace(" startup" , " createApplicationGraph" ) {
6579 (globalGraph as ApplicationGraph .Factory ).create(
6680 object : ApplicationGraphArguments {
6781 override val applicationContext: Context = this @BaseComposeLifeApplication
6882 },
6983 )
84+ }
7085 val ctx = applicationGraph.composeLifeApplicationCtx
7186 val processLifecycleOwner = ctx.processLifecycleOwner
7287 val appUpdatables = ctx.appUpdatables
0 commit comments