在13.0的系统产品定制化中,在默认的锁屏界面的时候原生系统是可以下拉状态栏的,但是定制的产品是需要禁用下拉状态栏的,所以需要在锁屏页面的时候禁用下拉状态栏,需要从两部分查看下拉状态栏流程然后禁用状态栏
接下来就来分析下看这个功能怎么实现
- packages\apps\SystemUI\src\com\android\systemui\statusbar\notification\stack\NotificationStackScrollLayout.java
- packages\apps\SystemUI\src\com\android\systemui\statusbar\phone\NotificationPanelViewController.java
其实SystemUI向 NotificationManagerService 注册一个"服务"(一个Binder)。这个"服务"就相当于客户端 SystemUI 在服务端 NotificationManagerService 注册的一个回调。当有通知来临的时候,
就会通过这个"服务"通知SystemUI,这个注册是在StatusBar#setUpPresenter()中完成的通知栏上显示通知的过程
然而systemui通知面板更新,即 mNotificationPanel.updateNotificationViews(reason) 方法。mNotificationPanel 为 NotificationPanelViewController 的对象。
NotificationPanelViewController#updateNotificationViews(reason)这就是通知更新的简单过程