什么是通知
通知通常先以图标的形式显示在通知区域,用户可以打开抽屉式通知栏查看通知的详细信息。 通知区域和抽屉式通知栏均是由系统控制的区域,用户可以随时查看,通知分为正在进行和普通通知,普通通知又分为可被清除按钮清除和不可被清除按钮清除。为了引起用户注意通知可以加入通知铃声、震动和闪灯。
通知顾名思义就是应用发出的用于提醒用户的信息,每个应用的通知都会显示在通知栏上。比如一个新闻类应用每天发一个当天重要的新闻,一个提醒类应用发出一个提醒通知等等。
通知的属性
通知包含以下常用属性。
- 大图标
- 小图标
- 标题
- �详细文本
- flags(通知位置)
- defaults(效果)
- contentIntent(点击通知后如何跳转)
通知的位置
- FLAG_AUTO_CANCEL 该通知能被状态栏的清除按钮给清除掉
- FLAG_NO_CLEAR 该通知不能被状态栏的清除按钮给清除掉
- FLAG_ONGOING_EVENT 通知放置在正在运行
通知的效果
- DEFAULT_ALL 使用默认效果
- DEFAULT_LIGHTS 默认闪光
- DEFAULT_SOUND 默认声音(uri,指向路径)
- DEFAULT_VIRATE 默认震动(需要添加震动权限VIBRATE: android.permission.VIBRATE)
相关类
NotificationManager
NotificationManager是一个系统Service,必须通过 getSystemService()方法来获取,它是状态栏通知的管理类,负责发送通知、清楚通知等。
Notification
具体的状态栏通知对象,可以设置图标、文字、提示声音、振动等参数。
PendingIntent
一个可以在满足一定条件下执行的Intent。
NotificationCompat.Builder
Android3.0之后,一般推荐使用NotificationCompat.Builder构建。NOTE:此类创建Notification所用的是建造者模式。
RemoteViews
RemoteView描述一个view,而这个view是在另外一个进程显示的,在通知中用于自定义通知布局。NOTE:自定义通知布局的可用高度取决于通知视图。普通视图布局限制为 64 dp,扩展视图布局限制为 256 dp。
TaskStackBuilder
Android通过TaskStackBuilder来实现导航。这个类是创建任务之间的导航堆栈,和按返回键返回上一个Activity的的堆栈是有区别的,NOTE:使用TaskStackBuilder会使得你之前的Activity都被杀死。
使用场景
- 后台服务定时启动
- 升级提醒
- 后台线程操作提醒
- 推送类通知(提醒点击进入相关界面)
- 多个同类提醒只加数量
说明
上面提到的场景我已经写好了例子放在github上,学习的朋友可以下载下来运行。