首先在 NotificationListener 的 onListenerConnected 方法中 调用 getActiveNotifications
NotificationListener#onListenerConnected -> NotificationListener#getActiveNotifications
-> NotificationListenerService#getActiveNotifications
拿到系统开机时存在的 Notifications.
NotificationListener的onListenerConnected的调用流程
NotificationListenerService 中收到MSG_ON_LISTENER_CONNECTED 调用 onListenerConnected
发送一个 NotificationEntry的过程
在 NotifCollection 的 postNotification 方法中创建了一个 NotificationEntry , 调用 dispatchEvents分发到 mNotifCollectionListeners
NotifCollectionListener的子类有哪些
NotifBindPipeline负责将一个NotificationEntry转换为对应的View.
最终是在NotificationContentInflater的 bindContent方法中绑定NotificationEntry到ExpandableNotificationRow.
inflate 文件status_bar_notification_row.xml 到一个 ExpandableNotificationRow。