SystemUI-应用知栏视图是如何夸进程显示?

应用知栏视图是如何夸进程显示到 SystemUI 的?

跨进程通讯的基础是 IPC ,通知服务(NotificationManagerService, 简称 NMS)也不离开 IPC ,核心架构还是 IPC 架构。

消息通道

  1. 应用做作为通知的发送端, 需要调用 NMS ,发通知。例如:
      String channelId = "channel_1";
      String tag = "ailabs";
      int id = 10086;
      int importance = NotificationManager.IMPORTANCE_LOW;
      NotificationChannel channel = new NotificationChannel(channelId, "123", importance);
      NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
      manager.createNotificationChannel(channel);
      Notification notification = new Notification.Builder(MainActivity.this, channelId)
              .setCategory(Notification.CATEGORY_MESSAGE)
              .setSmallIcon(R.mipmap.ic_launcher)
              .setContentTitle("This is a content title")
              .setContentText("This is a content text")
              .setAutoCancel(true)
              .build();
       // 通知栏要显示的视图布局
      RemoteViews remoteViews = new RemoteViews(getPackageName(), R.layout.layout_remoteviews);                 
      notification.contentView = remoteViews;
      manager.notify(tag, id , notification);
      
  1. SystemUI 作为通知的接收放需要注册监听器 INotificationListener 是监听通通知的一个 AIDL 接口,
    NotificationListenerService 是一个监听管理服务,他的内部类 NotificationListenerWrapper 实现了

INotificationListener 接口。 例如:

原文链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值