BinderUpdateTracer
A UiStateReadRecords.BinderEventListener that tracks per-binder shouldUpdate results and bind durations for observability.
Data is accumulated in a thread-local map keyed by renderUnitId. This data is drained by the BinderUpdateDetector when it receives the corresponding RenderUnitUpdated debug event (which fires on the same thread, immediately after all binder operations complete).
When isEnabled is false (default), callbacks are no-ops with negligible overhead (one static field read per call).
Functions
Called after onBind completes with the elapsed duration.
Called when a binder is rebound because its deps changed. Empty means the deps compared equal and something else caused the rebind.
Called instead of onDepsChanged when the binder declares deps but they were not diffed, so a null change list means "nobody looked" rather than "no dep model".
Called after shouldUpdate completes with the result.
Called when a binder is rebound because a state value it read was updated.