logo头像

为学日益,为道日损

android的通知管理

本文于1084天之前发表,文中内容可能已经过时。

##什么是通知

通知通常先以图标的形式显示在通知区域,用户可以打开抽屉式通知栏查看通知的详细信息。 通知区域和抽屉式通知栏均是由系统控制的区域,用户可以随时查看,通知分为正在进行和普通通知,普通通知又分为可被清除按钮清除和不可被清除按钮清除。为了引起用户注意通知可以加入通知铃声、震动和闪灯。

通知顾名思义就是应用发出的用于提醒用户的信息,每个应用的通知都会显示在通知栏上。比如一个新闻类应用每天发一个当天重要的新闻,一个提醒类应用发出一个提醒通知等等。

通知的属性

通知包含以下常用属性。

  • 大图标
  • 小图标
  • 标题
  • 详细文本
  • 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上,学习的朋友可以下载下来运行。

##资料

微信打赏