android 5.1+ Notification

本文详细介绍了Android系统中通知的发送流程。从应用层通过NotificationManager发送通知开始,深入到系统服务NotificationManagerService内部处理过程,包括消息队列的管理及状态栏更新机制,并探讨了Android L版本后通知颜色统一为白色的设计考虑。

user通过NotificationManager.notify发送通知请求,然后NotificationManger发送请求给NotificationManagerService,在这里对pendingIntent的信息进行提取以及过滤,然后将消息放进消息队列中去,enqueueNotificationInternal()方法负责将消息放入队列中,buzzBeepBlinkLocked()负责对消息进行处理.至此对于消息的第一步处理就到此结束 如图上半部分所示
notification

然后,当监听器监听到Notification的时候,通知BaseStatusBar,进行状态栏的通知更新,这里有一个问题,就是在android L版本之后,将所有的通知颜色都变成了白色,上网问了一下说是为了美观和整洁,的确有这个问题,但是当贴上非透明的图片的时候,原先的颜色会被涂白,因此,这里出现一些bug

因为原先的那种形式的图标不好看, 颜色太花, 在状态栏上一点也不好看.并且这也是 Material Design 的规范了 ( https://www.google.com/design/spec/patterns/notifications.html)实际上这样的改变在 Android 5.0 里好看了很多, 在 Android 6.0 里有个 android:windowLightStatusBar 把状态栏变成亮色的设定 (图标会变成灰色), 如果 Icon 是单色的, 系统 tint 成其他颜色选择的余地就大了.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值