Итак, я потратил 10 минут своего времени и нашел то, что надо. Заходим сюда https://github.com/AndroidSDKSources/android-sdk-sources-for-api-level-29/blob/master/android/view/ViewRootImpl.java и ищем вызов метода dispatchOnGlobalLayout(). Вызов этого метода зависит от переменной mRecomputeGlobalAttributes в attachInfo. Поищем, где она ставится в true. Это метод void needGlobalAttributesUpdate(boolean force) у класса View. А дальше все просто. Этот метод, например, дергается при вызове метода dispatchAttachedToWindow.
Oh shi, это ж не был призыв к действию, я просто фактом поделился :D
Окей, раз уж ты сходил прямо в бездну, я тоже гляну шо там.
Мне в целом всё понятно(кроме того как ты всё это раскопал), но при некоторых допущениях:
1) Не смотря на то что Квантум сказал о том что AttachInfo "одно на окно", я пока не понял как это оно так работает. Вью действительно меняет mRecomputeGlobalAttributes каким - то хитрым if - ом в "своём экземпляре" mAttachInfo, и если эта та же AttachInfo, что и у ViewRootImpl, то окей. Под "та же" не подразумевается тот же инстанс, мб есть какая - то другая связь, хз.
2) Это скорее дополнение: mRecomputeGlobalAttributes может засеттится в тру не только при аттаче вью, но и в адовом вьюшном методе setFlags(). Чтобы понять как он работает, надо кусок души отдать дьяволу. Хотя, если исходить из доков по globalListener, то очевидно, что слушатель тригернётся когда в setFlags прилетит visibility флаг(назовём это так), который у вьюхи visibility поменяет.
Спасибо за экскурс, это было интересно))