不积跬步无以至千里
最近被提了一个关于通知栏上通知排序的bug,之前就想过我们的通知栏上的顺序是在哪进行排序的?其实为什么呢?因为浸提那应用的同事提了一个设置Setpriority(int value)的方法,结果设置优先级较大了,还是没有排到通知队列的前边,很纳闷,今天就看一下咋回事。
其实通知由NotificationManager创建,然后通过IPC传到了NotificationManagerService里面,如图
NotificationManager.java的notify方法
其中核心实现是在调用notifyAsUser方法中,如下图:
如图可知,其中的调用的就是NotificationManagerService中的enqueueNotificationWithTag方法。
其中创建的逻辑咱们就不深究了,咱们看一下关于frameworks/base/services/core/java