Android Notification基本使用

基础用途概述

Notification,是一种具有全局效果的通知,可以在系统的通知栏中显示。当 APP 向系统发出通知时,它将先以图标的形式显示在通知栏中。用户可以下拉通知栏查看通知的详细信息。通知栏和抽屉式通知栏均是由系统控制,用户可以随时查看。

通知与四大组件的关系:

比如音乐播放器中,后台播放音乐,由于 service 是在后台运行,所以意图做什么我们看不到,这个时候可以通过 Notificaiton 来显示提醒。

同样,在音乐播放器中,程序在后台运行,点击音乐播放器的通知栏上的上一曲,下一曲等,那么可以让 service 服务和 BroadcastReceiver 广播相结合

Intent 作为意图处理,和 Notificaiton 的点击时间紧密结合在了一起,并且与 BroadcastReceiver 和 service 的联系也紧密不可以分割。

(service 在后台之后通过 BroadcastReceiver 来通知 Notificaiton 显示相关东西,在通过 Intent 完成用户的意图操作)

常见的用途:

1 显示接收到短消息、及时消息等信息(如QQ、微信、新浪、短信)

2 显示客户端的推送消息,如广告、优惠、版本更新、推荐新闻等,常用的第三方 SDK 有: JPush 、 个推 、 信鸽 、 网易云信(偏重 IM ) 、 阿里云推送

3 显示正在进行的事物,例如:后台运行的程序,如音乐播放进度、下载进度等

Notification的基本使用

通知栏主要的类:Notification 和 NotificationManager

NotificationManager :  是状态栏通知的管理类,负责发通知、清除通知等操作。

Notification 为通知信息类,它里面对应了通知栏的各个属性【备注:使用建造者模式构建 Notification 对象。由于 Notification.Builder 仅支持 Android 4.1及之后的版本,为了解决兼容性问题, Google 在 Android Support v4 中加入了 NotificationCompat.Builder 类。

Notification创建必要的属性,必须添加的属性:

小图标,通过 setSmallIcon() 方法设置

标题,通过 setContentTitle() 方法设置

内容,通过 setContentText() 方法设置

Notification 创建步骤:

Notification 的创建主要涉及到 Notification.Builder 、Notification 、NotificationManager。

Notification.Builer : 使用建造者模式构建 Notification 对象。由于 Notification.Builder 仅支持 Android 4.1及之后的版本,为了解决兼容性问题, Google 在 Android Support v4 中加入了 - NotificationCompat.Builder 类。对于某些在 Android 4.1 之后才特性,即使 NotificationCompat.Builder 支持该方法,在之前的版本中也不能运行。

Notification : 通知对应类,保存通知相关的数据。

NotificationManager : NotificationManager 是通知管理类,向系统发送通知时会用到。它是一个系统服务。调用 NotificationManager 的 notify() 方法可以向系统发送通知。

Notification 创建代码:

1 创建NotificationManager

创建NotificationManager

2 创建Notification.Builder,使用的是建造者模式

Android Notification基本使用_第1张图片

创建Notification.Builder

3 创建PendingIntent,处理点击通知之后的逻辑

Android Notification基本使用_第2张图片

创建PendingIntent

4 给Notification.Builder设置PendingIntent,然后发送通知

发送通知

Notification自定义布局(RemoteViews)

1 创建RemoteViews,并设置点击监听

Android Notification基本使用_第3张图片

创建RemoteViews

Android Notification基本使用_第4张图片

根据requestCode创建PendingIntent

2 把通知栏布局设置为remoteViews,就完成了自定义通知栏

设置通知栏布局

Notification细节

更新 Notification

更新通知很简单,只需要再次发送相同 ID 的通知即可,如果之前的通知还未被取消,则会直接更新该通知相关的属性;如果之前的通知已经被取消,则会重新创建一个新通知。

更新通知跟发送通知使用相同的方式。

取消 Notification

点击通知栏的清除按钮,会清除所有可清除的通知

设置了 setAutoCancel() 或 FLAG_AUTO_CANCEL 的通知,点击该通知时会清除它

通过 NotificationManager 调用 cancel(int id) 方法清除指定 ID 的通知

通过 NotificationManager 调用 cancel(String tag, int id) 方法清除指定 TAG 和 ID 的通知

通过 NotificationManager 调用 cancelAll() 方法清除所有该应用之前发送的通知

注意事项

如果你是通过 NotificationManager.notify(String tag, int id, Notification notify) 方法创建的通知,那么只能通过 NotificationManager.cancel(String tag, int id) 方法才能清除对应的通知,调用NotificationManager.cancel(int id) 无效。

设置 flag 属性

设置 FLAG_NO_CLEAR 表示设置通知不能被状态栏的清除按钮给清除掉,也不能被手动清除,但能通过 cancel() 方法清除notification.flags |= Notification.FLAG_NO_CLEAR;

取消全部通知:

if(mNotificationManager!=null){

   mNotificationManager.cancelAll();

}

设置 Notification 的通知效果

Notification 有震动、响铃、呼吸灯三种响铃效果,可以通过 setDefaults(int defualts) 方法来设置。 Default 属性有以下四种,一旦设置了 Default 效果,自定义的效果就会失效。

//设置系统默认提醒效果,一旦设置默认提醒效果,则自定义的提醒效果会全部失效。具体可看源码//添加默认震动效果,需要申请震动权限//

Notification.DEFAULT_VIBRATE

//添加系统默认声音效果,设置此值后,调用setSound()设置自定义声音无效

Notification.DEFAULT_SOUND

//添加默认呼吸灯效果,使用时须与 Notification.FLAG_SHOW_LIGHTS 结合使用,否则无效

Notification.DEFAULT_LIGHTS

//添加上述三种默认提醒效果

Notification.DEFAULT_ALL

除了以上几种设置 Notification 默认通知效果,还可以通过以下几种 FLAG 设置通知效果。

//提醒效果常用 Flag//三色灯提醒,在使用三色灯提醒时候必须加该标志符

Notification.FLAG_SHOW_LIGHTS

//发起正在运行事件(活动中)

Notification.FLAG_ONGOING_EVENT

//让声音、振动无限循环,直到用户响应 (取消或者打开)

Notification.FLAG_INSISTENT

//发起Notification后,铃声和震动均只执行一次

Notification.FLAG_ONLY_ALERT_ONCE

//用户单击通知后自动消失

Notification.FLAG_AUTO_CANCEL

//只有调用NotificationManager.cancel()时才会清除

Notification.FLAG_NO_CLEAR

//表示正在运行的服务

Notification.FLAG_FOREGROUND_SERVICE

写在最后

android o和android p对通知栏的改动频繁,如需适配可以查阅官方文档。

http://developer.android.com/design/patterns/notifications.html

你可能感兴趣的:(Android Notification基本使用)