@@ -36,54 +36,69 @@ import kotlinx.coroutines.asExecutor
3636 * receives data when a report is issued, either when the activity goes into the background
3737 * or if JankStatsAggregator issues the report itself.
3838 */
39+ // [START aggregator_activity_init]
3940class JankAggregatorActivity : AppCompatActivity () {
4041
42+ private lateinit var jankStatsAggregator: JankStatsAggregator
43+ // [START_EXCLUDE silent]
4144 private lateinit var binding: ActivityJankLoggingBinding
4245 private lateinit var navController: NavController
4346 private lateinit var appBarConfiguration: AppBarConfiguration
4447
45- private lateinit var jankStatsAggregator: JankStatsAggregator
46-
48+ // [START jank_aggregator_listener]
4749 private val jankReportListener =
4850 JankStatsAggregator .OnJankReportListener { reason, totalFrames, jankFrameData ->
51+ // real app would do something more interesting than log this...
52+
4953 Log .v(
5054 " JankStatsSample" ,
51- " *** Jank Report ($reason ), totalFrames = $totalFrames , " +
55+ " *** Jank Report ($reason ), " +
56+ " totalFrames = $totalFrames , " +
5257 " jankFrames = ${jankFrameData.size} "
5358 )
5459
5560 jankFrameData.forEach { frameData ->
5661 Log .v(" JankStatsSample" , frameData.toString())
5762 }
5863 }
64+ // [END jank_aggregator_listener]
65+ // [END_EXCLUDE silent]
5966
6067 override fun onCreate (savedInstanceState : Bundle ? ) {
6168 super .onCreate(savedInstanceState)
69+ // [START_EXCLUDE]
6270 binding = ActivityJankLoggingBinding .inflate(layoutInflater)
6371 setContentView(binding.root)
6472 setupUi()
65-
73+ // [END_EXCLUDE]
74+ // metrics state holder can be retrieved regardless of JankStats initialization
6675 val metricsStateHolder = PerformanceMetricsState .getForHierarchy(binding.root)
6776
77+ // initialize JankStats with aggregator for current window
6878 jankStatsAggregator = JankStatsAggregator (
6979 window,
7080 Dispatchers .Default .asExecutor(),
7181 jankReportListener
7282 )
7383
84+ // add activity name as state
7485 metricsStateHolder.state?.addState(" Activity" , javaClass.simpleName)
7586 }
87+ // [END aggregator_activity_init]
7688
89+ // [START aggregator_tracking_enabled]
7790 override fun onResume () {
7891 super .onResume()
7992 jankStatsAggregator.jankStats.isTrackingEnabled = true
8093 }
8194
8295 override fun onPause () {
8396 super .onPause()
97+ // before disabling tracking, issue the report with (optionally) specified reason
8498 jankStatsAggregator.issueJankReport(" Activity paused" )
8599 jankStatsAggregator.jankStats.isTrackingEnabled = false
86100 }
101+ // [END aggregator_tracking_enabled]
87102
88103 override fun onSupportNavigateUp (): Boolean {
89104 return navController.navigateUp(appBarConfiguration) || super .onSupportNavigateUp()
0 commit comments