Android学习笔记:通知(Notification)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/MaybeForever/article/details/102643532

通知(Notification)可以让我们在获得消息的时候,在状态栏、锁屏界面来显示相应的信息。当某个应用程序希望向用户发出一些提示信息,而该应用程序又不在前台运行时,就可以借助通知来实现。


一、通知的基本用法

  • 1、在活动中创建
  • 2、在广播接收器里创建
  • 3、在服务里创建

二、创建通知的详细步骤

(1)首先需要一个NotificationManager来对通知进行管理,可以调用Context的getSystemService()方法获取到。 getSystemService()方法接收一个字符串参数用于确定获取系统的哪个服务,这里我们传入Context.NOTIFICATION_SERVICE即可。

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

(2)接下来需要使用一个Builder构造器来创建Notification对象,为了防止API不稳定的问题,采用support库中提供的兼容API。support-v4库中提供了一个NotificationCompat类,使用这个类的构造器来创建Notification对象,就可以保证我们的程序在所有的Android系统版本上都能正常工作。

Notification notification = new NotificationCompat.Builder(context).build();

// 上述代码只是创建了一个空的Notification对象,并没有什么实际作用
// 可以在build()方法之前连缀任意多的设置方法来创建一个丰富的Notification对象
Notification notification = new Notification.Builder(context)
		.setContentTitle("This is content title") //指定通知的标题内容,下拉系统状态栏就可以看到这部分内容
		.setContentText("This is content text") //指定通知的正文内容,下拉系统状态栏就可以看到这部分内容
		.setWhen(System.currentTimeMills()) //指定通知被创建的时间(以毫秒为单位),当下拉系统状态栏时,指定的时间会显示在相应的通知上
		.setSmallIcon(R.drawable.small_icon) //设置通知的小图标
		.setLargeIcon(BitmapFactory.decodeResource(getResource(), R.drawable.large_icon)) //设置通知大图标
		.build();

(3)以上工作完成后,只需调用NotificationManager的notify()方法就可以让通知显示出来了。

//notify()方法接收两个参数:
//第一个参数是id,要保证为每个通知所指定的id都是不同的。
//第二个参数是Notification对象
manager.notify(1, notification);

三、取消通知的方法(两种解决方法)

(1)一种是在NotificationCompat.Builder中再连缀一个setAutoCancel()方法。

Notification notification = new NotificationCompat.Biilder(this)
	...
	.setAutoCancel(true)
	.build();

在setAutoCancel()方法传入true,表示当点击了这个通知的时候,通知会自动取消掉。

(2)一种是显式地调用NotificationManager的cancel()方法将它取消。

NotificationManager manager = (NotificationManager)getSystemService(Notification_SERVICE);
manager.cancel(1);

在cancel()方法中传入1,当前1指代的是通知设置的id。因此,如果想取消哪条通知,在cancel()方法中传入该通知的id即可。


四、常见的通知样式

(1)普通的Notification
(2)折叠式Notification

折叠式Notification是一种自定义视图的Notification,用来显示长文本和一些自定义的布局场景。它有两种状态:一种是普通状态下的视图(如果不对其进行自定义,则和普通Notification的样式一样),一种是展开状态下的视图(需要自定义视图,而且这个视图显示的进程和我们创建视图的进程不在一个进程,所以需要使用RemoteViews)。

(3)悬挂式Notification

悬挂式Notification是Android 5.0 新增加的方式。和前两种显示方式不同的是,前两种需要下拉通知栏才能看到通知,而悬挂式不需要下拉通知栏就能直接显示出来悬挂在屏幕上方,并且焦点不变,仍在用户操作的界面,因此不会打断用户的操作,其过几秒就会自动消失


五、通知的显示等级

Android 5.0 加入了一种新的模式Notification的显示等级,共有以下三种:

扫描二维码关注公众号,回复: 7564710 查看本文章
  • VISIBILITY_PUBLIC:任何情况都会显示通知。
  • VISIBILITY_PRIVATE:只有在没有锁屏时会显示通知。
  • VISIBILITY_SECRET:在pin、password等安全锁和没有锁屏的情况下才能够显示。

猜你喜欢

转载自blog.csdn.net/MaybeForever/article/details/102643532