Android系统通知处理流程

最近在分析Android系统的通知处理机制,觉得有必要梳理个笔记出来,供日后参考。

应用层使用NotificationManager系统服务进行通知显示,大体经过了NotificationManagerService -> StatusBarManagerService  -> SystemUI 这么几个阶段,之前使用Binder进行相互通讯。相关模块组织结构如下图所示,一目了然:

android通知


ServiceManager、SystemSerer和SystemUI是android系统三个非常重要的进程,相信熟悉Android系统框架的亲们已经比较了解了。所有的系统服务都是运行在SystemServer这个进程中,并且将自身注册到ServiceManager中。应用层通过Framework API发送通知时,会通过Binder驱动相应地调用NotificationManagerService的enqueueNotification方法。enqueueNotification方法记录通知内容,调用StatusBarManangerService的updateNotifcation接口,并且执行响铃、震动和呼吸灯效果,最后,如果有注册相应的辅助服务(AccessibilityService),则给辅助服务发送通知事件。StatusBarManagerService会将通知事件再次转发给SystemUI中负责通知栏显示的StatusBar。注意到Android系统内建有两个通知栏,一个是PhoneStatusBar,一个是TabletStatusBar,根据系统配置的类型决定用哪一种。

然后附带聊一下通知拦截的问题吧。根据上面的流程可以看到,有三个地方可以作为通知拦截的切入点。但是注意到响铃、震动和呼吸灯是由NotificationManagerService控制的,所以直接在第一环节切掉是最干净的。至于具体怎么切,root后你懂的。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值