Android 开发艺术探索笔记(12),android开发教程百度网盘

这里写图片描述

效果如下所示:

这里写图片描述

上面是普通的通知栏,下面则是自定义的RemoteView。

创建比较简单,只需提供包名

和资源ID就能创建一个RemoteView。而更新RemoteView则要通过RemoteView的一系列方法比如setTextViewText,里面通过资源id来设置想要显示的内容。如果要给控件添加单击事件则要使用PendingIntent 并通过setOnClickPendingIntent来实现。最后通过Notification的contentView来布局RemoteView。

RemoteView在桌面小窗口上的应用

就是在小窗口的AppWidgetProvider中的方法去更新RemoteView。

当广播到来以后,小窗口会根据Action来通过onReceive来分发广播。

onReceive可以分发到onEnable(第一次创建时调用)、onUpdate(更新时调用)、onDelete(删除时调用)、onDisable(最后一个该类型小窗口删除时调用)。都可以操作RemoteView。

PendingIntent的描述

PendingIntent表示一种处于pending状态的意图。就是表示接下来有一个intent(意图)在某个时候发生。PendingIntent的适用场景是给RemoteView添加点击事件,因为RemoteView不能直接像View那样更改UI,所以我们必须要设置PendingIntent,PendingIntent通过send和cancel方法来发送和取消特定的Intent。

Pending有三种待定意图:启动Activity(未加载时候的意图)、启动服务、发送广播,对应三个接口:

这里写图片描述

方法参数中第一个和第三个好理解,第二个requestCode为请求码,一般设为0即可。首先要了解两个PendingIntent什么时候是相同的:就是他们的requestCode和Intent都相同,则这两个是相同的。而Intent什么时候是相同的:当他们CompentName和intent-filter相同,就算Extras不同(Extras不参与匹配过程)则两个Intent相同。接下来通过这些匹配规则来了解第四个参数flags:

(1)FLAG_ONE\

《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》

【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享

_SHOT

当前描述的PendingIntent只能使用一次,然后它就会被自动cancel,如果后续还有相同PendingIntent则它们的send方法就会失效。即同类的通知只能使用一次后续的通知单击后无法打开。

(2)FLAG_NO_CREATE

当前描述的PendingIntent不会主动创建,如果当前PendingIntent不存在,则getActivity、getService、getBroadcast都会返回null。日常开发基本用不到

(3)FLAG_CANCEL_CURRENT
当前描述的PendingIntent如果已经存在,那么它就会被cancel,然后系统就会新创建一个PendingIntent,对于通知栏来说,那些已经cancel的通知被单击后无法打开。
(4)FLAG_UPDATE_CURRENT
当前的PendingIntent如果已存在,那么它将被更新。即它们Intent中的Extras会被替换成最新的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值