设为首页 加入收藏

TOP

Notification的基本用法以及使用RemoteView实现自定义布局
2017-06-18 10:22:10 】 浏览:3062
Tags:Notification 基本 用法 以及 使用 RemoteView 实现 定义 布局

Notification的作用


Notification是一种全局效果的通知,在系统的通知栏中显示。既然作为通知,其基本作用有:


Notification的基本操作:


Notification的基本操作主要有创建、更新和取消三种。一个Notification的必要属性有三项,如果不设置的话在运行时会抛出异常:


除了以上三项,其他均为可选项,不过一般而言,通知需要有交互的功能,所以一般Notification具有Action属性,这样就能跳转到App的某一个Activity、启动一个service或者发送一个Broadcast。


当系统受到通知时,可以通过震动、铃声、呼吸灯等多种方式进行提醒。


下面就从Notification的基本操作逐条介绍:


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


Notification.Builder:


Notification:通知对应类,保存通知相关的数据。NotificationManager向系统发送通知时会用到。


NotificationManager:通知管理类,调用NotificationManager的notify方法可以向系统发送通知。


获取 NotificationManager 对象:


NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);


前面讲到,Notification有三个必要属性以及一个很有必要的属性Action。下面我们就创建一个简单的Notification,主要有以下三步:


其中为了实现Action属性,我们需要创建Intent、PendingIntent和setContentIntent()这几步。


不难发现,其中的PendingIntent的设置才是其中的关键。


PendingIntent支持三种待定的意图:启动Activity,启动Service和发送Broadcast。对应于它的三个接口方法。


其中context和intent不需要讲,主要说一下requestCode和flags。其中requestCode是PendingIntent发送发的请求码,多数情况下设置为0即可,requestCode会影响到flags的效果。


PendingIntent相同:Intent相同且requestCode也相同。(Intent相同需要ComponentName和intent-filter相同)


flags的常见类型有:


FLAG_ONE_SHOT:只能被使用一次,然后就会被自动cancel,如果后续还有相同的PendingIntent。那么他们的send方法就会调用失败。
FLAG_NO_CREATE:如果当前系统中不存在相同的PendingIntent对象,系统不会创建该PendingIntent对象,而是直接返回null。(很少使用)


FLAG_CANCEL_CURRENT:如果当前系统中已经存在一个相同的 PendingIntent 对象,那么就将先将已有的 PendingIntent 取消,然后重新生成一个 PendingIntent 对象。


FLAG_UPDATE_CURRENT:当前描述的PendingIntent如果已经存在,那么它们会被更新,即Intent中的Extras会被替换到最新的。


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


更新通知和发送通知采用同样的方法。


取消通知的方式主要有以下5种:


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


前面提到了Notification的通知效果,有了通知效果更能提醒用户去查看Notification。


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


铃声:


震动:


呼吸灯


另一种方式:


还可以通过以下几种Flag来设置通知效果


上面讲到的Notification的布局都是系统默认的,当然有时候处于需求,我们可能需要自定义Notification的布局。


那如何实现Notification的自定义布局呢?


这里就需要提出一个新的知识点RemoteView,望文生义,即远程View。


RemoteView表示的是一种View结构,它可以在其他进程中显示(具体来讲是SystemServer进程),由于它是在其他进程中显示,为了更新它的界面,我们不能简单地使用普通View的那一套方法,RemoteView提供了一系列Set方法用于更新界面。


下面就是一个简单的示例;


有图:



】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Android Apk的反编译和加密 下一篇IPython及Python心得体会

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目