通知(Notification)的简单使用

为什么牛逼的程序员都不用 “ ! = null “ 做判空? 问题 为了避免空指针调用,我们经常会看到这样的语句 ...if (someobject != null) { someobject.doCalc();}... 最终,项目中会存在大量判空代码,多么丑陋繁冗!如何避免这种情况?我们是否滥用了判空呢? 精华回答 这是初、中级程序猿经常会遇到的问题。他们总喜欢在方法中返回null,因此,在调用这些方法时,也不得不去判空。另外,也许受此习惯影响,他们总潜意识地认为,所有的返回都是不可信任的,为了保护自己程序,就加了大量的判空。 吐槽完毕,回到这个题目本身: 阅读详情

通知(Notification)的简单使用

运行效果

运行效果

创建通知

首先,代码如下,我们再慢慢说:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Button button = (Button) findViewById(R.id.send_notice);
    button.setOnClickListener(this);

    }


@Override
public void onClick(View v) {
   switch (v.getId()) {
       case R.id.send_notice:
           // 主要看这几句
           NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
           Notification notification = new NotificationCompat.Builder(this)
                   .setContentTitle("Notification")
                   .setContentText("This is Details!")
                   .setSmallIcon(R.mipmap.ic_launcher)
                   .build();
        manager.notify(SIMPLE_NOTIFICATION, notification);
           break;
        default:
           break;
        }
    }

首先,你需要一个NotificationManager的实例对所有的通知进行管理。可以在Context中的getSystemService()函数得到。这个函数有一个字符串参数,用于确定是获得哪一个服务,使用常量Context.NOTIFICATION_SERVICE就可以得到实例了,其它的还有什么服务呢???还有很多很多服务

第二步就是构建通知的实例,这里使用一个NotificationCompat类的.Builder()方法(需要一个Context参数)进行构建.build()方法构建完成,我们可以在其中添加很多其它设置不同参数的方法,来自定义通知的内容。

为什么NotificationCompat类要使用support-v4库中的类,我看见support-v7库中也有这个类,它们之间有什么区别吗??目前,我还不清楚

不过,还是先看看目前我们要用的设置通知的方法吧

  • setContentTitile 非必须的,标题
  • setContentText 非必须的,正文,不能超过一行,多余的用省略号表示
  • setWhen 非必须,通知创建的时间
  • setSmallIcon 必须的,不然会出错。在状态栏显示的小图标
  • setLargeIcon 非必须的,通知上的大图标

最后,使用第一步得到的NotificationManager的实例中的notify()方法,第一个参数是id,保证每次启动通知的ID都是不同的,第二个参数就是一个通知的实例。就可以启动通知了。

点击通知启动活动

目前我们显示的通知是不能点击的,想实现点击效果就必须学习新的东西,开始吧。
首先,NotificationCompat中有一个setContentIntent()方法可以让通知可以点击,这个方法需要传入一个PendingIntent参数,所以,需要了解一下PendingIntent是什么东西。

然后,我们就来看看这个PendingIntent,它与Intent很像,都是用来启动活动,广播和服务的,区别也很明显。就是它是只用在通知上,不是通知创建时就执行这个PendingIntent,而是通知被点击时,PendingIntent才会执行,这就是最大的不同了。

最后,怎么创建一个PendingIntent呢?使用PedningIntent的getActivity(),getBroadCasr(),getService()方法就可以得到对应的实例了,这几个方法有相同的参数,第一个参数是Context,第二个参数不知道是什么,一般传0就可以了,第三个参数是Intent,用来知道启动哪个活动,广播和服务,最后一个参数也不知道是什么,不过一般也是传0就可以了。

好了使用第一步的setContentIntent()方法将PendingIntent实例传入就可以实现通知的点击功能了。。。

代码如下 :

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Button button = (Button) findViewById(R.id.send_notice);
    button.setOnClickListener(this);

    }


@Override
public void onClick(View v) {
   switch (v.getId()) {
       case R.id.send_notice:
           // 多出下面这两行
           Intent intent = new Intent(this, NotificationActivity.class);
           PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0);

           NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
           Notification notification = new NotificationCompat.Builder(this)
                   .setContentTitle("Notification")
                   .setContentText("This is Details!")
                   .setSmallIcon(R.mipmap.ic_launcher)
                   .setContentIntent(pendingIntent)  //  还有这一行
                   .build();
        manager.notify(1, notification);
           break;
        default:
           break;
        }
    }

取消通知

当我们点击通知后,通知启动了一个活动,但是通知却没有消失,我们再次点击通知时,它又启动了一个活动,这可不行,根据之前,学习的活动的启动模式中的知识。以默认Standard模式启动同一个活动两次也是两个不同的活动。所以为了不出现这种情况,必须在通知被点击后就消失才行。。

方法1、在创建Notification中可以使用setAutoCanel()方法,参数是一个boolean的变量,表示是否使用自动取消通知(在点击后自动消失)。

Notification notification = new NotificationCompat.Builder(this)
        .setContentTitle("Notification")
        .setContentText("This is Details!")
        .setSmallIcon(R.mipmap.ic_launcher)
        .setContentIntent(pendingIntent)  
        .setAutoCanel(true)  // 自动取消通知
        .build();

方法2、使用NotificationManager的实例的canel()方法也可以取消通知,需要传入一个id参数,对,就是上面说的保证每次通知都不同的那个id,这样才能确定取消的是哪个通知。

manager.canel(1);    //也可以取消通知的显示(显式取消)

进阶使用通知

在创建通知时可以使用大量的设置方法来丰富自己的通知

setSound():设置铃声
setVibrate():设置震动
setLights():设置指示灯
setDefaults():对上面的设置使用默认设置
setStyle():设置通知的风格
setPriority():设置通知的重要等级(就像QQ弹出消息的那种通知)

这几个方法是比较常用的,大家需要使用时,可以去自己去查询资料。。

Android通知(Notification)使用的简单例子Demo 1.在Android软件中通知(Notification)是一个比较常见的特色功能,当某个应用不在运行当中时,可能会向用户发送一些信息,比如QQ、微信等应用中新消息提醒的通知栏通知等,本Demo中将展示其用法。2.使用的开发工具为:Android Studio 3.1.1版本a. 新建一个项目:Notification_Test,修改activity_main.xml中内容为:<?xml v... 阅读详情

相关推荐

OpenNotification:OpenNotification 是可靠响应通知的开源版本。 它是一个 IT 紧急通知服务器

打开通知 OpenNotification 是可靠响应通知的开源版本。 它是一个 IT 紧急通知服务器。-- 说明 OpenNotification 是一个 IT 紧急通知服务。 它最初是 Reliable Response Notification,并于 2012 年 9 月 9 日由 David Rudder 开源。OpenNotification 用于提供对 IT 中断的紧急响应。 它通过 SMTP、HTTP 和电子邮件接受新警报。 然后它将警报映射到一个组并管理升级链,处理更新,甚至可以更新原始服务器。 OpenNotification 以单向方式运行,其中警报进来并由 OpenNotification 专门处理,或双向运行,其中 OpenNotification 将更新发送回原始监控服务器。 OpenNotification 具有对 Nagios、GroundWork、OpenV

Vue2通知提醒框(Notification)

全局展示通知提醒信息,在系统四个角显示通知提醒信息。

Vue Amazing UI(Vue3 + TypeScript + Vite)组件库唯一开发维护者 1万+

SAP PS模块预算控制实战:为什么你的采购订单金额和预算占用对不上?

本文深入解析SAP PS模块中采购订单金额与预算占用偏差的常见问题,揭示承诺成本与实际成本的分流处理机制。通过实战案例和六步定位法,提供发票拆分、跨年度预算等典型场景的解决方案,并分享预防性配置框架和最佳实践,帮助企业有效控制预算偏差。

weixin_30363981的博客 516

Notification.description(ant-design) 和 $notify.message(element-ui) 通知内容自定义

Notification.description(ant-design) 和 $notify.message(element-ui) 通知内容自定义

共同进步 2556

Mooncake架构:基于KVCache解耦的LLM推理优化方案

在大语言模型推理中,KVCache是Transformer解码过程中用于缓存历史Key/Value向量的核心数据结构,它避免了序列重复计算,但会随上下文长度线性增长,成为显存占用的主要部分。其原理是在自回归生成时,将已计算过的注意力键值对存储下来,供后续Token生成时直接使用,从而提升计算效率。这项技术的核心价值在于,通过高效管理KVCache,可以显著降低长序列推理时的显存压力,提升GPU资源利用率。在实际应用场景中,尤其是在处理长上下文对话、高并发请求时,KVCache的管理策略直接决定了服务的吞吐量

weixin_35753431的博客 534

从零到一:Livox Mid-360 激光雷达的硬件集成与避坑实战

本文详细介绍了Livox Mid-360激光雷达的硬件集成全流程,包括硬件准备、网络配置、驱动编译和常见问题解决方案。通过实战经验,帮助开发者高效完成从设备拆箱到数据输出的完整链路,避免在IP设置、驱动编译和固件兼容性等环节踩坑。

salt的博客 1030

在antdv中的notification中,加入换行样式

首先明确一点,antdv的notification组件如果需要换行,可使用ES6的 ` 符号+换行符,并且css设置whiteSpace: 'pre-wrap’属性,用于识别换行符/n,就可以实现换行效果。 具体代码如下: 定义弹出notification的方法: openNotification(title, message) { this.$notification.open({ message: title, description: message,

是我的温柔啊 4933

拯救者R7000用户实测:用华为电脑管家11.0版搞定MatePad Pro多屏协同(附驱动与显卡避坑指南)

本文详细介绍了如何在非华为笔记本联想拯救者R7000上安装华为电脑管家11.0版,实现与MatePad Pro的多屏协同功能。从驱动优化到显卡配置,提供了全面的避坑指南和实用技巧,帮助用户解决连接失败等常见问题,提升跨设备生产力体验。

weixin_30788619的博客 398

Notification 通知提醒框的自定义玩法

open下的style样式的color无法更改message,只能对description生效,这里的XX集团跌停是我用自定义组件实现的。然后再说自定义按钮,基本原理也是createElement,“点击”这个按钮我是在message里面嵌套了组件,使得文本和组件在一起。

u014519682的博客 484

Windows/Mac/Linux三系统保姆级教程:用llama.cpp将safetensors模型转gguf格式(附常见错误解决)

本文提供Windows、Mac和Linux系统下使用llama.cpp将safetensors模型转换为gguf格式的详细教程,涵盖环境配置、转换原理及常见错误解决方案。通过跨平台兼容性处理,帮助开发者高效完成模型格式转换,优化边缘计算性能。

weixin_29227425的博客 270

交流电路计算方法:复阻抗和相量法

一,复阻抗 电容电路,电压与电流的大小比值是XC=1/WC,相位上电流比电压超前90度 这样描述很麻烦,在复平面里,相位超前90度,可以用什么数学表示呢? 也就是说,一个相量,乘以j之后,大小没变化,相位变得超前90度了 同样的,大小不变,相位落后90度应该除以j 原来我们说电容电路,给个电压,算电流又要算XC,又要另外说相位超前90度,现在可以简单点 在这个计算式里,1/wc还是原来的容抗大...

theory and practice的博客 3万+

Android通知 Notification的简单使用

在Android应用的开发中,必然会遇上通知的开发需求,本文主要讲一下Android中的通知 Notification的简单基本使用,主要包含创建通知渠道、初始化通知、显示通知、显示图片通知、通知点击、以及配合WorkManager发送延迟通知。

yuantian_shenhai的博客 1473

水文仿真软件:HEC-RAS (Hydrologic Engineering Center‘s River Analysis System)_(7).一维非稳态水力模型

自定义脚本是通过编程语言(如 Python)编写的一系列自动化任务,可以帮助用户更高效地处理数据和运行模型。编写脚本:使用 Python 或其他编程语言编写自定义脚本。集成脚本:将脚本集成到 HEC-RAS 中,实现自动化数据处理和模型运行。

kkchenjj的博客 933

Android Notification通知简单使用DEMO

今天学习了一下Notification的简单使用方法,记录一下完整的例子

菜鸟记录 1163

一文读懂AI协同办公领域发展和趋势

协同办公,又称OA,是指企业内部或外部各类人员之间利用信息技术来进行协作工作的一种形式。这种协作工作既可以由直接员工进行,也可以来自外部的咨询机构、合作伙伴或联营企业。协同办公的优势在于可以对资源进行有效管理和配置,各部门之间可以建立良好的协作关系,跨部门更好地实现资源共享。

女王の专属领地 2363

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Android Notification通知的简单使用

运行效果: 前言: Notification,是一种具有全局效果的通知,可以在系统的通知栏中显示。当 APP 向系统发出通知时,它将先以图标的形式显示在通知栏中。用户可以下拉通知栏查看通知的详细信息。通知栏和抽屉式通知栏均是由系统控制,用户可以随时查看。 View层布局:添加一个按钮用于发送消息。 Control层代码: public class MainActivity exte...

dpl12的博客 430

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Notification(通知)的属性及简单使用

Notification的常用属性 属性 说明 icon 通知上的图标 tickerText 通知上显示滚动的文字 when 显示通知时间 flags 通知的特性 contentView 通知的视图 default 默认效果 contentIntent 点击通知栏的操作 sound 播放的声音 ...

coyote 2409

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Android Notification 通知 简单使用

人不应该一直怀念过去,要活在当下,所以我现在讲的这个Notification 的使用是在API16及以上的环境的,不兼容低版本步骤开始:1.我们先创建一个Notification ,看下面代码可以看出是使用的建造者模式,顺便给它设置三个基本属性,注意,没这三个基本属性它是活不了的Notification notification = new Notification.Builder(this)

知言而易行 8802

Android中通知(Notification)的简单使用

NotificationManagernm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); //获取系统服务 Notification.Builderbuilder = new Notification.Builder(this); builder.setSmallIcon(R.draw

小旭的专栏 1387

应用通知的简单使用(notification)

应用产生的通知主要是notificationManager在起作用,是状态栏的管理类,由于是系统服务,因此需要getSystemService()的方法来使用它。 首先我们创建布局文件,根据需求我们设置两个按钮,一个按钮用来显示通知,一个按钮用来删除通知 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:andr...

u014131314的博客 430

状态栏通知Notification的简单使用

今天在学习Notification时同时参考了一些相关的博客,现在结合自身学习实际来总结一下。 在使用手机时,当有未接来电或者短消息时,通常会在手机屏幕上的状态栏上显示。而在Android中有提醒功能的也可以用AlertDialog,但是当使用AlertDialog 的时候,用户正在进行的操作将会被打断。因为当前焦点被AlertDialog得到。我们可以想像一下,当用户打游戏正爽的时候,这时候来...

weixin_30847939的博客 166

Notification(通知)的简单使用

Notification 就是我们手机最上面的通知。 简单的创建一个Notification,以及给Notification 点击事件,跳转到另一个Activity.效果图 MainActivity:package com.example.days11notification0001;import android.annotation.SuppressLint; import android.a

法鲁克 356

Notification——通知的简单使用与解析

通知是项目中经常会使用的,下面就来总结一下:1,普通通知的简单使用; 2,系统默认效果; 3,自定义的效果; 4,跳转指定Activity通知栏; 5,自定义通知栏;下面直接上代码: Activity代码:package com.btzh.mynotificationtest;/** * Created by Lenovo on 2017/4/16. */public interfac

www121104115的博客 878

Android API- Notification(通知)的简单使用

学习Notification中,创建Notification实例的时候发现,使用构造函数传入参数的方法已经被弃用了; 而且,使用notification对象也调用不了setLatestEventInfo()方法;API建议用Notificaion.Builder,那就用这个吧~ 简单的实现一个通知跳转功能: 主类创建通知: public class MainActivity e

Jiacw的博客 659

Android---60---Notification 通知栏的简单使用

Notification是显示在手机状态栏的通知  通过Notification.Builder类创建Notification对象。 Notification.Builder常用方法: setDefaults ():设置通知LED灯、音乐、振动等 setAutoCancle():设置点击通知后,状态栏自动删除通知 setContentTitle():设置通知标题 setConte

bobo 2811
上一篇: 我对 Activity 的理解
下一篇: Linux 的学习方法
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值