android 源码分析notification,# Notification 源码分析
引言
notification.jpg
Notification 在v7版本下从4.0后增加了Media Style. 今天我们分析下Notification在v7版本的源码。有助于我们针对不同版本的Notification做出合适样式选择。
Notification使用流程
现在我们使用Notification基本都是如下步骤:
NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
builder.setContentText
.setSmallIcon
.set...
Notification notification = builder.build();
notificationManager.notify(TYPE_BigText,notification);
我们看一下涉及到的类定义:
NotificationCompat
Helper for accessing features in Notification introduced after API level 4 in a backwards compatible fashion.
帮助Notification存储细节。
NotificationCompat.Builder
Builder class for NotificationCompat objects. Allows easier control over all the flags, as well as help constructing the typical notification layouts.
NotificationCompat对象的构造器类,构造Notification的样式。
当Notification构建好之后最后一个步骤:
NotificationManager
Post a notification to be shown in the status bar. If a notification with the same id has already been posted by your application and has not yet been canceled, it will be replaced by the updated information.
推送一个Notification到状态栏,如果应用中已经有了一个同样的Notification Id 将会被代替并更新。
Android support v7中的Notification相关类
v7对v4中的Notification进行扩展。
v7下NotificationCompat的定义
v7_NotificationCompat.jpg
然后我来看下NotificationCompat.Builder的定义
v7_NotificationCompat.Builder.jpg
Builder重写了v4下的getExtender() method,看下返回类型BuilderExtender 找到这样的定义
Interface for appcompat to extend v4 builder with media style.
appcompat 用来扩增v4 media style 的接口
我们再仔细看getExtender中的代码,针对不同版本sdk,返回不同版本的BuilderExtender.
针对ICE_CREAM_SANDWICH版本的BuilderExtender的代码看下:
v7_Notification_Extend.jpg
内部调用add方法进行整理样式
用table显示不同版本扩展mediastyle的method.
版本 | 整理样式的方法
------------- | -------------| -------------
LOLLIPOP (>=Android 5.1) | addMediaStyleToBuilderLollipop
JELLY_BEAN (>=Android4.1&&
ICE_CREAM_SANDWICH (>=Android4.0&&
从这个表格可以知道 4.0以后才出现的Media Style.
再看v4下Builder.build method
v4_NotificationCompat_Builder_build.jpg
最终是通过BuilderExtender构造Notification.
总结
Builder构造好样式后,会根据不同版本生成不同的BuilderExtender.
如果你想知道Notification在不同版本上的限制,你只需要查看不同版本的BuilderExtender的区别即可。
android 源码分析notification,# Notification 源码分析相关推荐
- 【Android 启动过程】Activity 启动源码分析 ( ActivityThread 流程分析 二 )
文章目录 前言 一.ActivityManagerService.attachApplicationLocked 二.ActivityStackSupervisor.attachApplication ...
- 【Android 启动过程】Activity 启动源码分析 ( ActivityThread -> Activity、主线程阶段 二 )
文章目录 前言 一.ActivityThread 类 handleLaunchActivity -> performLaunchActivity 方法 二.Instrumentation.new ...
- 【Android 启动过程】Activity 启动源码分析 ( ActivityThread -> Activity、主线程阶段 一 )
文章目录 前言 一.ClientTransactionHandler.scheduleTransaction 二.ActivityThread.H 处理 EXECUTE_TRANSACTION 消息 ...
- 【Android 启动过程】Activity 启动源码分析 ( AMS -> ActivityThread、AMS 线程阶段 二 )
文章目录 前言 一.热启动与冷启动选择 二.AMS 进程中执行的相关操作 三.通过 Binder 机制转到 ActivityThread 中执行的操作 总结 前言 上一篇博客 [Android 启动过 ...
- 【Android 插件化】Hook 插件化框架 ( 从 Hook 应用角度分析 Activity 启动流程 二 | AMS 进程相关源码 | 主进程相关源码 )
Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...
- 【Android 电量优化】JobScheduler 相关源码分析 ( JobSchedulerService 源码分析 | 任务检查 | 任务执行 )
文章目录 一.回调 StateChangedListener 接口 二.JobHandler 处理 ( 任务检查 ) 三.maybeRunPendingJobsH 方法 四.assignJobsToC ...
- Android 9 (P) Zygote进程启动源码分析指南二
Android 9 Zygote进程启动源码分析指南二 Android 9 (P) 系统启动及进程创建源码分析目录: Android 9 (P)之init进程启动源码分析指南之一 Andro ...
- 【Android】Android Binder进程间通信AIDL示例与源码分析
前言 众所周知,Android进程间通信采用的是Binder机制.Binder是Android系统独有的进程间通信方式,它是采用mmp函数将进程的用户空间与内核空间的一块内存区域进行映射,免去了一次数 ...
- Android 热修复 Tinker接入及源码浅析
本文已在我的公众号hongyangAndroid首发. 转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/54882693 本文出自 ...
最新文章
- 逆变器的技术创新 让光伏电站更具发展前景
- JS通过正则限制 input 输入框只能输入整数、小数(金额或者现金) 两位小数
- log-slave-updates 引起 MySQL 从节点同步异常慢
- 都说它是年度Android机皇,【上手】都说它是年度Android机皇,Galaxy Note10到底怎么样?...
- Windows+Chrome OS双系统安装方法
- html字符串长度函数,最常用的20个javascript方法函数
- Tomcat漏洞修复方法【补丁下载及安装详细流程】
- 独立事件、笛卡尔积与矩阵向量乘法
- pythonchallenge之C++学习篇-01
- Tensorflow2.0.0版本和Keras2.4.3不兼容
- WinForm程序中使用Unity3D控件
- 002649:bootdo项目改造计划
- C++ 模板实现—双向链表: doubly linked list
- osm数据导入mysql_导入OSM数据至PostgreSQL数据库
- 修复打不开计算机管理,win10系统设备管理器打不开的修复技巧
- 常见生态问题成因及措施
- 为什么安卓手机没有苹果手机流畅?
- 用自己电脑搭建外网可访问的服务器
- google迈向IoT的开端——推出Android Things操作系统
- PCB四层板常规层压结构及设计阻焊-深亚电子