通知,几乎存在于每一个 Android 的应用中,新闻客户端来一条新闻的时候会给你发一条通知,QQ、微信有新消息来的时候会给你发一条通知,反正,通知就像魔鬼般一直缠绕在我们的左右。所以,Android 的开发中,关于通知这方面也是需要掌握的。
什么是通知?
通知是您可以在应用的常规 UI 外部向用户显示的消息。当您告知系统发出通知时,它将先以图标的形式显示在通知区域中。用户可以打开抽屉式通知栏查看通知的详细信息。 通知区域和抽屉式通知栏均是由系统控制的区域,用户可以随时查看。(摘自于google官方网站)
通知,几乎存在于每一个 Android 的应用中,新闻客户端来一条新闻的时候会给你发一条通知,QQ、微信有新消息来的时候会给你发一条通知,反正,通知就像魔鬼般一直缠绕在我们的左右。所以,Android 的开发中,关于通知这方面也是需要掌握的。
什么是通知?
通知是您可以在应用的常规 UI 外部向用户显示的消息。当您告知系统发出通知时,它将先以图标的形式显示在通知区域中。用户可以打开抽屉式通知栏查看通知的详细信息。 通知区域和抽屉式通知栏均是由系统控制的区域,用户可以随时查看。(摘自于google官方网站)
怎么写一个通知并发出去呢?
1、创建通知
2、设置相关的标题,内容以及要做的动作等等
3、发送通知
如何创建通知?
通知的创建是比较费事的,怎么说呢?不就new一个就好了么,肯定没那么简单了。
API 11 以前(不包括11)
说的好简单,new 一个就好,你以为是对象啊,想要什么就 new 什么。没错,通知也是一个对象。确实也可以 new 出来,但这是api版本 11 以前的了,在api 11 以前确实可以直接new,然后发送。就是那么简单。(new Notification())
API 16以前(不包括16)
在 api 11 以后,采用的是 Build 的方式去创建一个通知,但怎么兼容 api 版本 11 以前的呢?官方给出了一个万能的兼容包,那就是V4包,我们都知道,V4 是我们开发中必不可少并且很强大的一个兼容包,里面涵盖的东西也很多,例如Fragment,drawLayout等等,所以,这也很好兼容,直接使用V4包解决全部问题。(new NotificationCompat.Builder(this).build())
API 16以后(包括16)
好了,16以前的问题解决了,谷歌没事做又在通知这里折腾了,16以后又变了。这个时候又可以使用 Android 自带的来创建通知了,别想多,不是直接 new,还是通过 Build 的方式来创建,只不过 Build 的方式有所变化。(new Notification.Builder(this).build())
API 23以上(包括23)
这个版本就蛋疼了,以前可以直接setLatestEventInfo() 一次性解决所有问题的,一次设置标题,内容等。现在不行了,api 23以上的版本的 Android 已经弃用了这个方法。所以,以前的 setLatestEventInfo 又要say goodbye 了。
从上面可以看出,要兼容所有的版本其实还是比较复杂的,有那么复杂吗?
其实也没那么复杂,既然11以前的已经弃用new的方式了,就直接使用V4包就好了,23以上的 setLatestEventInfo 已经弃用,就不用就好了。最后就只剩下 API 16 这个分界线了。所以,最后我们只需要根据 API 的版本判断一下是 16 以前的还是 16 以后的就好啦。
最后来看大招:
一个完美的通知就这样写出来了。代码写的很简单,注释也有,不再解释。
这是比较简单的一个通知,也是最基本的通知。通知还有多种玩法,例如,闪三色灯,震动、铃声提醒等。还有自定义通知样式,字体,大图通知等等多种玩法。这里就先不放出来了,后续有时间再写几篇有关于通知的博文吧!
2016-10-26