APP请求系统通知(“Notifications 通知”拆解)
Posted xhBruce
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了APP请求系统通知(“Notifications 通知”拆解)相关的知识,希望对你有一定的参考价值。
APP请求系统通知(“Notifications 通知”拆解)
android12-release
APP创建Notification并请求
系统通知框架
- IBinder通信到
IBinder b = ServiceManager.getService("notification");
sService = INotificationManager.Stub.asInterface(b);
-
日志
Slog.v(TAG, "enqueueNotificationInternal: pkg=" + pkg + " id=" + id + " notification=" + notification);
-
channel == null
:从 Android 8.0(API 级别 26)开始,必须为所有通知分配渠道,否则通知将不会显示。
-
NotificationRecord
包含notification相关信息 -
EnqueueNotificationRunnable/PostNotificationRunnable
经过两道run()处理,最后NotificationListenerService
通知监听显示 -
日志
if (DBG) Slog.d(TAG, "EnqueueNotificationRunnable.run for: " + n.getKey());
,这里正真通知添加队列,并输出Eventri日志EventLogTags.writeNotificationEnqueue
-
调用NotificationListenerService实例对象的
onNotificationPosted()
frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/NotificationListener.java
通知中振动/铃声/呼吸灯 notification_alert
应用请求系统通知在PostNotificationRunnable
过程中buzzBeepBlinkLocked(r)
方法处理振动/铃声/呼吸灯
if (DBG) Slog.v(TAG, "Interrupting!");
该日志表示将要开始处理振动/铃声
呼吸灯
处理
buzzBeepBlink = (buzz ? 1 : 0) | (beep ? 2 : 0) | (blink ? 4 : 0);
应用请求了振动/铃声/呼吸灯
输出notification_alert日志
以上是关于APP请求系统通知(“Notifications 通知”拆解)的主要内容,如果未能解决你的问题,请参考以下文章
通信通知 Communication Notifications 的实现 (iOS 15+)
通信通知 Communication Notifications 的实现 (iOS 15+)
通信通知 Communication Notifications 的实现 (iOS 15+)
NotificationManagerService启动(“Notifications 通知”拆解)