android 源码分析notification,# Notification 源码分析

引言

bfa3096bbdbb

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的定义

bfa3096bbdbb

v7_NotificationCompat.jpg

然后我来看下NotificationCompat.Builder的定义

bfa3096bbdbb

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的代码看下:

bfa3096bbdbb

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

bfa3096bbdbb

v4_NotificationCompat_Builder_build.jpg

最终是通过BuilderExtender构造Notification.

总结

Builder构造好样式后,会根据不同版本生成不同的BuilderExtender.

如果你想知道Notification在不同版本上的限制,你只需要查看不同版本的BuilderExtender的区别即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/497777.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

广州签发全国首张微信身份证,AI成主要证明技术

来源:人工智能学家AItists概要:12月25日,广州市公安局南沙区分局、腾讯、建设银行等10余家单位发起的“微警云联盟”在广州南沙成立,现场签发了全国首张微信身份证“网证”。12月25日,广州市公安局南沙区分局、腾讯、建…

android底层设置相机帧率,Android Camera previewFrame 提高 fps

/*** http://my.oschina.net/lifj/blog/705104**/在做Camera预览的时候,通过PreviewFrame()方法获取数据,但是发现fps很低,一直在10~12fps徘徊。当然,有人推荐使用setPreviewCallbackWithBuffer。试了一下,fps没有明显…

android 视频做背景图片,视频后面怎么加背景图片?安卓手机给视频添加背景图片的方法...

狸窝是帮助用户解决问题 提供教程解决方案 在这个过程中有使用我们自己开发的软件 也有网上找的工具 只要帮助用户解决问题就好!同意则往下继续了解学习 ...注意此教程方案是:『安卓手机端教程方案』。很多手机视频分享平台对视频参数都会有要求,手机上大…

MySQL中information_schema

来源:http://hi.baidu.com/starsw001/item/d151bd591cfb7f01e7c4a557 大家在安装或使用MYSQL时,会发现除了自己安装的数据库以外,还有一个information_schema数据库。 information_schema数据库是做什么用的呢,使用WordPress博客…

量子计算远没到可收割的时候

来源:风云之声概要:我们重视量子计算,是因为它的潜力,而不是它的现状。它确实有革命性的潜力,只是还需要艰苦的努力,绝不是一蹴而就的,更不是已经处在商业盈利的边缘,等着大家一哄而…

android 通知灯 测试,Android灯光系统通知灯【转】

标签:一、通知灯应用程序的编写1、首先实现一个按钮功能xmlns:tools"http://schemas.android.com/tools" android:layout_width"match_parent"android:layout_height"match_parent" android:paddingLeft"dimen/activity_horizon…

简评黑客利器——中国菜刀

来源:http://edu2b.sinaapp.com/?p236&replytocom17 作者:XXX 我是一个玩黑很多年的人,入侵了大大小小的服务器无数,体验着入侵快感的同时,自己的技术和经验也不断提高,在渗透过程中收集了大大小小的…

2017,AI偏见为何如此受关注?

来源:亿欧概要:从荒谬到令人不寒而栗,算法偏见在社会中产生越来越大的影响,而且这一问题已经暴露多年。但直到2017年,人们对AI算法偏见的公众意识似乎才达到了一个临界点。佛罗里达州的一项犯罪预测算法错误地将黑人罪…

android aidl工具,【Android】AIDL介绍和实例讲解

前言为使应用程序之间能够彼此通信,Android提供了IPC (Inter Process Communication,进程间通信)的一种独特实现: AIDL (Android Interface Definition Language, Android接口定义语言)。网上看了几篇关于AIDL的文章,写…

MySQL新建用户,授权,删除用户,修改密码

来源:http://www.cnblogs.com/analyzer/articles/1045072.html 首先要声明一下:一般情况下,修改MySQL密码,授权,是需要有mysql里的root权限的。 注:本操作是在WIN命令提示符下,phpMyAdmin同样…

机器学习 TOP 10 必读论文 | 资源

来源:AI科技大本营编辑 | DonnaMedium上的机器学习深度爱好者必关注的账号Mybridge照例对11月发表的学术论文进行了排名,整理出了10篇必读论文,建议收藏深读。1. Alpha Zero:用强化学习算法对中国象棋和国际象棋进行自我修炼&…

爱奇艺首页底部导航按钮android,仿爱奇艺/腾讯视频ViewPager导航条实现

仿爱奇艺/腾讯视频ViewPager导航条实现,支持自定义导航条高度,宽度,颜色变化,字体大小变化。支持多种滚动模式,支持自定义每个TabView的样式。项目地址:https://github.com/KCrason/DynamicPagerIndicatord…

详解MYSQL数据库密码的加密方式及破解方法

来源:http://www.heibai.net/articles/hacker/mimapojie/2009/0908/841.html MYSQL数据库用户密码跟其它数据库用户密码一样,在应用系统代码中都是以明文出现的,在获取文件读取权限后即可直接从数据库连接文件中读取,例如asp代码中…

4-Docker命令之docker logs

1.docker logs介绍 docker logs命令是用来获取docker容器的日志 2.docker logs用法 docker logs [参数] CONTAINER [root@centos79 ~]# docker logs --helpUsage: docker logs [OPTIONS] CONTAINERFetch the logs of a containerAliases:docker container logs, docker lo…

亚马逊等智能音箱“偷听”用户 被指收集隐私

来源:中国评论通讯社概要:近日,美国消费者保护组织Consumer Watchdog出具的一份报告显示,来自亚马逊和谷歌的专利申请曝光了其智能音箱是如何“偷听”用户的。据英国《每日邮报》报道,近日,美国消费者保护…

android camera捕捉,通过android camera2 API捕捉4:3相机图片与16:9传感器阵列相机

我想从使用Camera2 API(Android 5.0版本中添加)的Android fron-facing相机以4:3的宽高比捕捉视频。它工作正常,除非相机有16:9传感器阵列(作为三星Galaxy S5上的前置摄像头)。在这种情况下,图像看上去就像是16:9图像被…

HTTP 相应头相关

If-Modified-Since & If-None-MatchIf-Modified-Since,和 Last-Modified 一样都是用于记录页面最后修改时间的 HTTP 头信息,只是 Last-Modified 是由服务器往客户端发送的 HTTP 头,而 If-Modified-Since 则是由客户端往服务器发送的头&am…

基于互联网云脑架构分析百度的现状与未来

前言:这是未来智能实验室基于互联网云脑架构,对世界科技企业的未来发展趋势进行分析的文章。因为百度排在BAT的首位,因此这个系列研究文章就从百度开始进行研究。作者:刘锋 计算机博士,互联网进化论作者互联网云脑&am…

华为鸿蒙操作界面,华为鸿蒙被“实锤”,操作界面曝光,为何被吐槽是换皮安卓?...

4月已经进入尾声,但鸿蒙系统的消息最近却变少了,记得此前发布Mate X2的时候,余承东表示要在4月份开始推送鸿蒙系统,Mate X2会成为首批升级机型。然而目前有不少用户吐槽称,依然还没有等到鸿蒙系统的推送,毕…

将文件内含有的特殊字符还原

如下文件内容: 这里有特殊字符:\n 、\t 、\u4e0a 、\/ 我要做的事,就是恢复其特殊字符的作用(而不是打印被转义后的效果) 直观的看,很容易:直接替换不就行了 line line.replaceAll("\\n&…