效果如下所示:

上面是普通的通知栏,下面则是自定义的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会被替换成最新的。

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

  1. Android 开发艺术探索——第十章 Android的消息机制

    Android 开发艺术探索--第十章 Android的消息机制读书笔记 Handler并不是专门用于更新UI的,只是常被用来更新UI 概述 Android的消息机制主要值得就是Handler的运行机 ...

  2. 计算机一级笔记百度云盘,自带笔记功能搜索强化!百度网盘10.0新版体验

    [PConline应用]近日,百度网盘手机客户端更新到了10.0版本,新版给用户带来了全新的操作界面还有一个比较实用的新功能,一起来看看吧. 简约新界面 自带夜间模式 新版百度网盘手机客户端采用了全新 ...

  3. Android开发艺术探索笔记

    <Android开发艺术探索>这本书在几年前就已经买了,陆陆续续看过几次,都没有看完,没有理解透. 最近重读<Android开发艺术探索>,读了两次,第一次读完感觉还有大量的知 ...

  4. Android开发艺术探索笔记(一) Activity的生命周期和启动模式(1)

    Activity作为Android开发中最常用的一个组件,是Android开发人员必须熟悉且掌握的重要内容.同时Activity也是在面试中经常被问到的一个方向.因此,掌握Activity的重要性也不 ...

  5. 百度 android 下载文件夹在哪里,手机上从百度网盘下载下来的东西在哪个文件夹里?...

    手机上从百度网盘下载下来的东西在哪个文件夹里?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 手机上从百度网盘下载下来的 ...

  6. ViewRoot,DecorView,MeasureSpec和View的工作原理——Android开发艺术探索笔记

    原文链接 http://sparkyuan.me/ 转载请注明出处 View的绘制流程是从ViewRoot的performTraversals方法開始的.它经过measure.layout和draw三 ...

  7. Android 开发艺术探索笔记(17),android开发艺术探索

    垃圾回收的相关工作,比如清楚数据 调用onDeatchFromWindow方法,在这个方法里结束进程.终止动画等 通过Session的remove方法删除Winodow,最终会调用WindowMana ...

  8. Android 开发艺术探索笔记(21),阿里P7级别面试经验总结

    Looper的工作原理 就是Looper一直查看MessageQueue中是否有新消息,没有就一直阻塞,否则取出新消息. 在它的构造方法中它会先创建一个MessageQueue,然后将当前线程的对象保 ...

  9. python项目开发实战网盘-《Python项目案例开发从入门到实战》PDF版百度网盘

    「教程分享:Python项目开发从入门到实列」 本书例子具有实用性,20个不同类型的完整列子,600分钟高品质配套教学视频,完整的源码和教学课件,让你对枯燥的Python语言学习充满乐趣. 编辑推荐 ...

  10. python项目开发实例-《Python项目案例开发从入门到实战》PDF版百度网盘

    「教程分享:Python项目开发从入门到实列」 本书例子具有实用性,20个不同类型的完整列子,600分钟高品质配套教学视频,完整的源码和教学课件,让你对枯燥的Python语言学习充满乐趣. 编辑推荐 ...

最新文章

  1. 一种在MVC3框架里面设置模板页的方法,不使用_ViewStart
  2. mysql5.7.21源码安装
  3. 【Linux系统编程】互斥锁
  4. docker利用Dockerfile来制作镜像
  5. 图像处理-图像增强(三)
  6. 【Zookeeper】查看ZK连接总数
  7. php 正则表达式 文档,php的正则表达式完全手册
  8. 学习笔记(03):MySQL数据库运维与管理-01-mysql通用日志与错误日志
  9. fedora下安装python
  10. GD2拖动验证码Thinkphp版
  11. linux chmod 使用方法,linux中chmod命令的使用方法
  12. 服装CAD软件测试初学者,CAD服装打版基础教程
  13. android 拍照和选择相册图片剪切
  14. 编译原理课程设计c语言,编译原理课程设计心得体会
  15. java 实现扑克牌洗牌功能
  16. 手游服务器开发技术详解
  17. java Android 生成6位随机数字
  18. 51单片机实现万年历
  19. 《C语言程序设计》江宝钏主编-习题5-3-动态最大值!!!
  20. JZOJ 6276.树【扫描线】【线段树】

热门文章

  1. Python入门50个小程序
  2. wow.js动画插件
  3. 考研复试数据库原理课后习题(一)——绪论
  4. 解决一例:“无法删除文件,无法读源文件或磁盘”
  5. 用mysql设计一个KTV点歌系统_KTV点歌系统(JAVA+MYSQL)
  6. Excel生成随机数(函数RAND)
  7. Excel2016 折线图
  8. 九大百度竞价操作技巧
  9. 云计算与大数据应用技术————21大数据2021142247537刘新敏
  10. vue 阻止输入框冒泡