Android 中 Notification 与状态栏信息

本文详细解释了Android中的Notification与Toast的区别,并提供了创建和显示Notification的步骤及注意事项。通过实例代码演示了如何在状态栏显示Notification,包括设置通知的详细信息、默认声音、震动和Light效果,以及如何清除特定的Notification。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     NotificationToast都可以起到通知、提醒的作用。但它们的实现原理和表现形式却完全不一样。Toast其实相当于一个组件(Widget)。有些类似于没有按钮的对话框。而Notification是显示在屏幕上方状态栏中的信息。还有就是Notification需要用NotificationManager来管理,而Toast只需要简单地创建Toast对象即可。

 

下面来看一下创建并显示一个Notification的步骤。创建和显 示一个Notification需要如下5步:

      1. 通过getSystemService方法获得一个NotificationManager对象。

      2. 创建一个Notification对象。每一个Notification对应一个Notification对象。在这一步需要设置显示在屏幕上方状态栏的通知消息、通知消息前方的图像资源ID和发出通知的时间。一般为当前时间。

     3. 由于Notification可以与应用程序脱离。也就是说,即使应用程序被关闭,Notification仍然会显示在状态栏 中。当应用程序再次启动后,又可以重新控制这些Notification。如清除或替换它们。因此,需要创建一个PendingIntent对象。该对象由Android系统负责维护,因此,在应用程序关闭后,该对象仍然不会被释放。

    4. 使用Notification类的setLatestEventInfo方法设置Notification的详细信息。

      5. 使用NotificationManager类的notify方法显示Notification消息。在这一步需要指定标识Notification的唯一ID。这个ID必须相对于同一个NotificationManager对象是唯一的,否则就会覆盖相同IDNotificaiton

下面我们来演练一下如何在状 态栏显示一个Notification,代码如下:

//  第1步
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
//  第2步
Notification notification = new Notification(R.drawable.icon, "您有新消息了", System.currentTimeMillis());
//  第3步
PendingIntent contentIntent = PendingIntent.getActivity(this0, getIntent(), 0);
//  第4步
notification.setLatestEventInfo(this"天气预报""晴 转多云", contentIntent);
//  第5步
notificationManager.notify(R.drawable.icon, notification);

<!--[endif]-->下面的代码使用showNotification方法显示了3Notification消息。

 

showNotification("今 天非常高兴""今天考试得了全年级第一",
        
"数学100分、语文99分、英语100分,yeah!", R.drawable.smile, R.drawable.smile);
showNotification(
"这是为什么呢?""这 道题为什么会出错呢?""谁有正确答案啊.",
        R.drawable.why, R.drawable.why);
showNotification(
"今天心情不好""也 不知道为什么,这几天一直很郁闷.""也许应该去公园散心了",
        R.drawable.why, R.drawable.wrath);
其中第2个和第3Notification使用的是同一个IDR.drawabgle.why),因此,第3Notification会覆盖第2Notification

在显示Notification时还可以设置显示通 知时的默认发声、震动和Light效果。要实现这个功能需要设置Notification类的defaults属性,代码如下:

 

notification.defaults = Notification.DEFAULT_SOUND;        //  使用默认的声音
notification.defaults = Notification.DEFAULT_VIBRATE;        //  使用默认的震动
notification.defaults = Notification.DEFAULT_LIGHTS;        //  使用默认的Light
notification.defaults = Notification.DEFAULT_ALL;            //  所有的都使用默认值
    注意:设置默认发声、震动和Light的方法是setDefaults。该 方法与showNotification方法的实现代码基本相同,只是在调用notify方法之前需要设置defaults属性(defaults属性必须在 调用notify方法之前调用,否则不起作用)。在设置默认震动效果时还需要在AndroidManifest.xml文件中通过<uses-permission>标签设置android.permission.VIBRATE权限。

    如果要清除某个消息,可以使用NotificationManager类 的cancel方 法,该方法只有一个参数,表示要清除的NotificationID。使用cancelAll可以清除当前NotificationManager对象中的所有Notification

    运行本节的例子,单击屏幕上显示Notification的按钮,会显示如 图1所示的消息。每一个消息会显示一会,然后就只显示整个Android系统(也包括其他应用程序) 的Notification(只显示图像部分)。如图2所示。如果将状态栏拖下来,可以看 到Notification的详细信息和发出通知的时间(也就是Notification类的构造方法的第3个参数值),如图3所 示。当单击【清除通知】按钮,会清除本应用程序显示的所有Notification

     相关显示效果读者可以自己把代码贴上去运行观看显示;

基于开源大模型的教学实训智能体软件,帮助教师生成课前备课设计、课后检测问答,提升效率效果,提供学生全时在线练习指导,实现教学相长。 智能教学辅助系统 这是一个智能教学辅助系统的前端项目,基于 Vue3+TypeScript 开发,使用 Ant Design Vue 作为 UI 组件库。 功能模块 用户模块 登录/注册功能,支持学生和教师角色 毛玻璃效果的登录界面 教师模块 备课设计:根据课程大纲自动设计教学内容 考核内容生成:自动生成多样化考核题目及参考答案 学情数据分析:自动化检测学生答案,提供数据分析 学生模块 在线学习助手:结合教学内容解答问题 实时练习评测助手:生成随练题目并纠错 管理模块 用户管理:管理员/教师/学生等用户基本管理 课件资源管理:按学科列表管理教师备课资源 大屏概览:使用统计、效率指数、学习效果等 技术栈 Vue3 TypeScript Pinia 状态管理 Ant Design Vue 组件库 Axios 请求库 ByteMD 编辑器 ECharts 图表库 Monaco 编辑器 双主题支持(专业科技风/暗黑风) 开发指南 # 安装依赖 npm install # 启动开发服务器 npm run dev # 构建生产版本 npm run build 简介 本项目旨在开发一个基于开源大模型的教学实训智能体软件,帮助教师生成课前备课设计、课后检测问答,提升效率效果,提供学生全时在线练习指导,实现教学相长。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值