不积跬步无以至千里

最近被提了一个关于通知栏上通知排序的bug,之前就想过我们的通知栏上的顺序是在哪进行排序的?其实为什么呢?因为浸提那应用的同事提了一个设置Setpriority(int value)的方法,结果设置优先级较大了,还是没有排到通知队列的前边,很纳闷,今天就看一下咋回事。
其实通知由NotificationManager创建,然后通过IPC传到了NotificationManagerService里面,如图
NotificationManager.java的notify方法

其中核心实现是在调用notifyAsUser方法中,如下图:

本文探讨了Android系统中通知栏通知的排序逻辑。当应用通过NotificationManager设置通知时,通知经过IPC传递到NotificationManagerService。在NotificationManagerService的enqueueNotificationWithTag方法中,通过NotificationRecord对通知的priority进行处理,并转化为mImportance。排序主要依据NotificationComparator,比较mImportance、PackagePriority、priority和mRankingTimeMs等属性,确保通知按设定的优先级和时间显示。
订阅专栏 解锁全文
1136

被折叠的 条评论
为什么被折叠?



