之前知乎上有人问“硬盘被写入数据后重量会变化么?”。来,先投个票看看你的观点: 然后看看冬瓜哥的观点。 这个问题还真是有点烧脑。我们不妨先看看高中物理学过的极板电容器被充了电,其质量是否有变化。...总之,对NAND Flash充电的电源,负极虽然提供给Cell一堆电子,但是电源也会从Cell中吸纳1000个电子输送给电源正极,也就是说,在Cell内部其实是有个电势差的,整体是电中性,所以,质量不变
对于通知栏消息来说,如果采用这个flag,那么同类的通知只能使用一次,后续的通知单击后将无法打开。...FLAG_CANCEL_CURRENT:当前描述的PendingIntent如果已经存在,那么它们都会被cancel,然后系统会创建一个新的PendingIntent。...对于通知栏消息来说,那些被cancel的通知单击后将无法打开。...: 如果标志位是FLAG_ONE_SHOT,那么后续的通知中的PendingIntent会和第一条通知保持完全一致,包括其中的Extras,单击任何一条通知后,剩下的通知均无法再打开,当所有的通知都被清除后...,会再次重复这个过程; 如果标志位是FLAG_CANCEL_CURRENT,那么只有最新的通知可以打开,之前弹出的所有通知都无法打开; 如果标志位是FLAG_UPDATE_CURRENT,那么之前弹出的通知中的
,Notification仍然会显示在状态栏中,当应用程序再此启动后,又可以重新控制这些Notification,如清除或者替换他们。...因此,需要创建一个PendingIntent对象。该对象由Android系统负责维护,因此在应用程序关闭后,该对象仍然不会被释放。...执行取消的方法,即5S后 自动清除该通知栏 ,根据需求考虑是否需要这样 // Handler handler = new Handler(); // handler.postDelayed...将Android状态栏滑下来后,单击Notification,就会显示关联的这个Activity。如果Activity已经显示,仍然会显示一个新的Activity,并覆盖当前显示的Activity。...* * FLAG_ONLY_ALERT_ONCE //标记声音或者震动一次 * * FLAG_AUTO_CANCEL //在通知栏上点击此通知后自动清除此通知
,系统如何使用它,以及为什么您会需要可变类型的 PendingIntent。...比如,所封装的 Intent 可能会在闹铃关闭后或者用户点击通知时被触发。 PendingIntent 的关键点是其他应用在触发 intent 时是 以您应用的名义。...在本例中,由于我们明确知道未来需要进行的操作,所以我们使用 FLAG_IMMUTABLE 标记构建了无法被修改的 PendingIntent。...当系统显示通知,且用户点击通知时,会在我们的 PendingIntent 上调用 PendingIntent.send(),来启动我们的应用。...FLAG_IMMUTABLE: 表示其他应用通过 PendingIntent.send() 发送到 PendingIntent 中的 Intent 无法被修改。
安静听~") //调用系统默认响铃,设置此属性后setSound()会无效 //.setDefaults(Notification.DEFAULT_SOUND...,使用该标记后你的通知栏无法被用户手动进行删除,只能通过代码进行删除,慎用 8)setProgress(int max, int progress,boolean indeterminate) 属性:...c) 不设置SummaryText的话,展开后最下面一行的内容会消失 例子: private void showBigViewText() { NotificationCompat.BigTextStyle...c) 不设置SummaryText的话,展开后最下面一行的内容会消失 例子: private void showBigViewInbox() { NotificationCompat.InboxStyle...c) 不设置SummaryText的话,展开后第二行字的内容会消失 例子: private void showBigViewPic() { NotificationCompat.BigPictureStyle
PendingIntent 是一种特殊的 Intent ,字面意思可以解释为延迟的 Intent ,用于在某个事件结束后执行特定的 Action 。...---- 更新 Notification 更新通知很简单,只需要再次发送相同 ID 的通知即可,如果之前的通知还未被取消,则会直接更新该通知相关的属性;如果之前的通知已经被取消,则会重新创建一个新通知。...详见上节:创建 Notification ---- 取消 Notification 取消通知有如下 5 种方式: 点击通知栏的清除按钮,会清除所有可清除的通知 设置了 setAutoCancel() 或...楼主在这里踩了坑,愣是调了半天没找到为什么自定义效果会消失,忘大家慎之。 //设置系统默认提醒效果,一旦设置默认提醒效果,则自定义的提醒效果会全部失效。...安静听~") //调用系统默认响铃,设置此属性后setSound()会无效 //.setDefaults(Notification.DEFAULT_SOUND
notification.setLatestEventInfo(getApplicationContext(), "通知标题", "通知显示的内容", pendingIntent); notification.flags...,我们还可以更新某些通知: manager.notify(id, new_notification); 3由于Notification的包装内容为Intent,我们就可以方便地为通知被点击的触发的事件传值...表示什么都不做,下次你传进来的Intent,如果被发现是同一个Intent,则所有通知都保持为同一个Intent,只是新来的Extra被保留了。...2、PendingIntent.FLAG_ONE_SHOT send()只能被执行一次,即是说,假如该通知点击后不消失,那么再次点击不会发生任何事。...事实如下: Android有一个栈机制,每个产生的活动在过了产生期后,都会进入这个栈,新的活动压着旧的活动,每一次寻找类名的时候,都默认提取的是栈顶的活动。
而是当系统显示通知,并且用户点击通知时,才会由系统通知这个系统应用间接执行 PendingIntent#send() ,而不是通过当前应用执行。...; 2、执行时间不同 —— PendingIntent 会延迟执行: Intent 通常会立即执行,而 PendingIntent 通常会延迟执行,延迟到其他进程完成任务后再执行,甚至延迟到创建进程消亡后..., Intent intent, int flags) 创建 PendingIntent 后,就可以将 PendingIntent 发送给其他应用,例如发送到系统通知消息: 示例程序 // 通知构造器...如果后续继续消费这个已经被取消的 PendingIntent,将抛出 CanceledException 异常。...被消费后不支持重复消费,即只能使用一次。
查了一下资料,发现 NotificationListenerService 是在 Android 4.3 (API 18)时被加入的,作用就是用来监听通知栏消息。...="android.service.notification.NotificationListenerService" /> 然后一般会重写下面这三个方法...cancelNotification(String pkg, String tag, int id) :在 API = 21 时使用此方法来取消通知将无效,被废弃。...} else { cancelNotification(sbn.getPackageName(), sbn.getTag(), sbn.getId()); } } 检测通知监听服务是否被授权...从问题的回答中可以了解到,是因为 NotificationListenerService 被杀后再次启动时,并没有去 bindService ,所以导致监听效果无效。
尽管必须设置通知的重要性和优先级,但是系统并不保证通知的行为,系统可能会因为别的因素改变重要性等级。用户可以随时更改重要性等级。...上面所示的 setFlags() 方法有助于在通过通知打开应用程序后保留用户的预期导航体验。...); 警告:如果您重新使用PendingIntent,用户可能会回复与他们认为不同的对话。...以便隐藏直接回复界面并向用户确认他们的回复已经被正确接受并处理。...移除通知 通知会在以下几种情况被移除: 用户清除 创建通知时调用了 setAutoCancel(),用户点击通知后会自动消失。 调用 cancel() 方法,传入指定ID,这个方法会删除指定通知。
)来设置通知,在更新进度的时候在此发起通知更新progress,并且在下载完成后要移除进度条,通过调用setProgress(0, 0, false)既可。...3)相关属性和方法 属性: PendingIntent的位标识符: FLAG_ONE_SHOT 表示返回的PendingIntent仅能执行一次,执行完后自动取消 FLAG_NO_CREATE ...“正在进行的”通知不能被手动删除。 ?...实现:大视图风格通知(注:4.1之前的版本不支持大视图) 只在通知被展开时显示 何时展开:通知处在顶端,或者用户通过收拾展开 收件箱风格的通知: 相比普通视图,只多出:7....4.低版本中,自定义的通知栏中如果带有按钮,可能按钮点击事件会失灵 解决方法:看其它的应用,好像在低版本都会隐藏掉那些按钮,就是为了不影响用户体验,所以应该就这么解决,判断版本号在去决定是否现在按钮。
PendingIntent是一种特殊的Intent,和Intent的区别在于Intent是立刻执行的,而PendingIntent不是,可以被理解为一种异步处理机制。...01 通知trampoline限制 当用户点击通知后,会启动一个组件来响应用户的点击操作, 一般最终会打开一个界面。这个界面组件就是通知trampoline。...但有时候网络、耗时操作等各种原因会造成等候时间较长, 进而导致界面弹出较晚, 以致几秒后才跳转出⼀个页面, 这种体验相对而言比较差。...构建 PendingIntent; 通知触发的目标组件, 也就是点击通知后启动的Service或者Broadcast, 启动某个Activity; 弹出通知后, 应用切换到后台, 此时再点击通知...()参数改为 PendingIntent.getActivity,同时这个目标Activity正好是第三方页面的话,点击通知后,直接启动的就是第三方页面,而开发者自身的业务需求则将无法得到处理。
PendingIntent这个类用于处理即将发生的事情。比如在通知Notification中用于跳转页面,但不是马上跳转。 ...//notice.setLatestEventInfo(this, "通知", "开会啦", PendingIntent.getActivity(this, 0, null, 0)); notice.setLatestEventInfo...(this, "通知", "开会啦", PendingIntent.getActivity(this, 0, new Intent(this,Activity2.class), 0));//即将跳转页面...(this, "通知", "开会啦", PendingIntent.getActivity(this, 0, new Intent(this,Activity2.class), 0));//即将跳转页面...查看PendingIntent 类可以看到许多的Send函数,就是PendingIntent在进行被赋予的相关的操作。
,负责发通知、清楚通知等。...,并且通知的构造方式也发生了改变) PendingIntent pendingIntent2 = PendingIntent.getActivity(this, 0,...setNumber(1).build(); notify3.flags |= Notification.FLAG_AUTO_CANCEL; // FLAG_AUTO_CANCEL表明当通知被用户点击时...,通知将被清除。...) A title and expanded message (通知的标题和内容) A PendingIntent (点击通知执行页面跳转) 使用流程: 1、创建NotificationManager
如果前台服务至少具有以下特征之一,则系统在服务启动后立即显示关联的通知: 该服务与包含action buttons.的通知相关联。...检测何时阻止了不受信任的触摸 如果触摸动作被系统阻止, Logcat会记录以下消息: Untrusted touch due to occlusion by PACKAGE_NAME 测试变更 默认情况下...更新您的应用 如果您的应用从充当通知蹦床的服务或广播接收器启动活动,请完成以下迁移步骤: 创建PendingIntent与以下活动之一关联的对象: 用户点击通知后看到的活动(首选)。...蹦床活动或启动用户点击通知后看到的活动的活动。 使用PendingIntent在上一步中创建的对象作为构建通知的一部分。...自定义通知更改 Android 12会更改完全自定义通知的外观和行为。以前,自定义通知能够使用整个通知区域并提供自己的布局和样式。
上回的博文,博主介绍了PendingIntent的用法,下面再列出有用到它的场合: 1、用于定时器AlarmManager,处理时刻到达后的提醒动作 2、用于通知推送Notification,处理点击通知后的相应动作...为true时将不显示推送时间,动态显示从通知被推送到当前的时间间隔,以“分钟:秒钟”格式显示 setSmallIcon : 设置状态栏里面的图标(小图标) setTicker : 设置状态栏里面的提示文本...若为true,点击该通知后,通知会自动消失;若为false,点击该通知后,通知不会消失。...在以上参数都设置完毕后,调用该方法会返回Notification对象 NotificationManager Notification只是生成通知的内容,实际推送动作还需要借助于系统的通知服务来实现...调用该方法后,状态栏和下拉列表中的指定通知将消失 cancelAll : 取消所有通知 下面是NotificationManager的调用代码例子: NotificationManager
图标 Ticker提示语句 setTicker("来了一条设置属性通知") 在来一条notification时,默认情况通知栏上会显示一个小icon,但是不是很显眼,并且不下拉通知栏就不知道具体是来了什么消息...Ticker 设置时间 这个可设可不设,默认也会取系统时间 setWhen(System.currentTimeMillis()) 点击自动移除 这个最好还是设置成true,我自己测试的手机默认是不会自动移除的...,一条notification被点击了,我们就默认为查看了,就不应该再显示。...number 设置数据 这个数据主要是携带给跳转Activity用的,比如我们推送了一部小说,携带了小说id等重要信息,用户点击后可以跳转对应的小说详情去。...Action API20之后新增的功能,这是一个很好的功能,我们通常一个通知的作用就是展示,最多给整体设置一个pendingIntent,这样扩展性就比较差了,但是有了Action,我们就能在通知上自定义功能键了
, "通知显示的内容", pendingIntent); notification.flags|=Notification.FLAG_AUTO_CANCEL...当提示后,点击在消息提示栏的 “通知”时,能打开一个窗体activity PendingIntent pendingIntent = PendingIntent.getActivity(...3.调用NotificationManager.notify方法发起通知,发起后的通知就会在消息栏提示。...", System.currentTimeMillis()); PendingIntent pendingIntent = PendingIntent.getActivity...", "通知显示的内容", pendingIntent); notification.flags
会变为下方这样子的大型界面,方便显示更多内容,也许都不用进主应用啦。...接下来使用NotificationCompat.Builder创建通知,老方法在API 23只后就已经删掉了,用不了!...setWhen(long):设置通知时间,一般设置的是收到通知时的System.currentTimeMillis() setSmallIcon(int):设置右下角的小图标,在接收到通知的时候顶部也会显示这个小图标...的位标识符(第四个参数): FLAG_ONE_SHOT 表示返回的PendingIntent仅能执行一次,执行完后自动取消 FLAG_NO_CREATE 表示如果描述的PendingIntent不存在...,传递给了标题和文本中,最后一个仅仅是个int而已= =,官方给预设在那,会显示到通知栏右下角 ?
用户可以向下拖动抽屉中的通知以显示展开的视图,该视图显示其他内容和操作按钮(如果提供)。 通知在通知抽屉中保持可见,直到被应用程序或用户关闭。...4.2、重要通知 重要通知,优先级设置最高,会直接显示在屏幕内(前台),而不是只有通知抽屉里,所以一定要谨慎设置,不要引起用户的负面情绪。...可以通过PendingIntent打开一个Activity,也可以是发送一个广播。 在Android10.0及以上,系统也会默认识别并添加一些操作,比如短信通知上的「复制验证码」。...从8.0开始,用户可以通过通知渠道设置启用或禁止锁屏通知… 6.1.3、勿扰模式 5.0开始,勿扰模式下会组织所有声音和震动,8.0以后可以根据渠道分别设置。...从12.0开始,将不支持完全自定义的通知,会提供 Notification.DecoratedCustomViewStyle替代… 6.5.3、PendingIntent 12.0需要明确设置flag
领取专属 10元无门槛券
手把手带您无忧上云