一、注册广播的方式

动态注册:在代码中;静态注册:在清单文件中
如何创建一个广播接收器呢?
答:新建一个类,让它继承BroadcastReceiver,并重写父类的onReceiver()方法就行了,这样当有广播到来时,onReceicer()方法就会得到执行,具体的逻辑就可以在这个方法中处理。

举例:动态注册编写一个监听网络变化的程序

提醒网络变化还不够人行话,希望能准确告知用户当前是有网还是无网,我们进行对上面的代码进行优化

二、静态注册广播

这里借用JingXingLiang博主文章,感谢!

三、发送标准广播

是一种完全异步执行的广播,在广播发出之后,所有的广播接收器几乎都会在同一时刻接收到这条广播消息,因此他们之间没有先后顺序。这种广播的效率会比较高,但同时也意味着它是无法被截断的。

1、新建一个MyBroadcastReceiver用来接收广播

2、静态注册广播,看打钩

3、新建一个活动用来发送一个值为android.intent.action.BOOT_COMPLETED的广播
(1)、编辑一个按钮

(2)、编辑活动文件

四、发送有序广播

是一种同步执行的广播,在广播发出之后,同一时刻只会有一个广播接收器能够接收到这条广播的消息,当这个广播接收器中的逻辑执行完毕之后,广播才会继续传递。所以此时的广播接收器是有先后顺序的,优先级高的广播接收器就可以收到广播消息,并且前面的广播接收器还可以截断正在传递的广播,这样后面的广播就无法收到广播的消了。

1、新建另一个项目BroadcastTest2,将项目创建好之后定一个广播接收器,用于上一小节中的自定义广播,新建AndroidBroadcastReceiver

2、在清单文件里对这个广播器进行修改,监听com.example.broadcasttest.MY_BROADCAST这条广播

3、回到BroadcastTest项目,修改代码

做好这一步就可让BroadcastTest2程序接收到广播,那么想要让广播有一个先后顺序接收的话,在清单文件里设置android:priority属性给广播接收器设置一个优先级

那么如皋想在BroadcastTest程序里将广播截断,在广播接收器里添加一句abortBroadcast();

五、使用本地广播

前面发送和接收的广播全部属于系统全局广播,即发出的广播可以被其它任何应用程序接收到,并且也可以接收来袭于其它任何应用程序的广播,这样就很容易引起安全性问题,比如我们发送的一些广播携带关键性的数据有可能会被其它的应用程序截获,或者其他程序不断的向我们广播接收器里发生各种垃圾广播。
为了简单第解决广播传播的问题,android引入了一套本地广播机制,使用这个广播机制发出的广播只能够在应用程序的内部进行传递,并且广播接收器也只能接收来自本应用程序的广播。
本地广播的用法并不复杂,主要就是使用了LocalBroadcastManager来对广播进行管理,并提供了发送和注册广播接收器的办法。

本地广播是无法通过静态注册的方式来接收,因为静态注册主要是为了让程序在未启动的情况下也能接收到广播,而发送本地广播时,我们的程序是肯定启动了,因为也完全不需要使用静态注册的功能。

1、可以明确的知道正在发送的广播不会离开我们的程序,因此不必担心机密数据泄露。
2、其它的程序无法将广播发送到我们程序的内部,因此不需要担心会有安全漏洞的隐患。
3、发送本地广播比发送系统全剧广播将会更叫高效。

根据郭霖大神的《第一行代码》学习,敬礼!

Android初学之十二:Broadcast相关推荐

  1. 精通Android自定义View(十二)绘制圆形进度条

    1 绘图基础简析 1 精通Android自定义View(一)View的绘制流程简述 2 精通Android自定义View(二)View绘制三部曲 3 精通Android自定义View(三)View绘制 ...

  2. 深入Android系统(十二)Android图形显示系统-2-SurfaceFlinger与图像输出

    最近有些忙,切实体验了一把拖更的羞耻感 ( *︾▽︾) 本文和上一篇深入Android系统(十二)Android图形显示系统-1-显示原理与Surface关系比较密切,撸完前篇更易理解本文啦 (๑‾ ...

  3. app android 遥控,第十二章 遥控机器人 《App Inventor--创建自己的安卓应用》

    第十二章 遥控机器人 本章将创建一个应用,将Android手机变成LEGO MINDSTORMS NXT 机器人的遥控器.应用中用按钮来控制机器人前后移动.左右转动和停止,如果机器人遇到障碍物,它还会 ...

  4. 【Android游戏开发十二】(保存游戏数据 [上文])详解SharedPreference 与 FIleInputStream/FileOutputStream将数据存储到SD卡中!

     李华明Himi 原创,转载务必在明显处注明: 转载自 [黑米GameDev街区] 原文链接:  http://www.himigame.com/android-game/327.html 很多童鞋说 ...

  5. Android tips(十二)--Android开发中使用矢量图

    转载请标明出处:一片枫叶的专栏 本文我们将介绍一些关于Android矢量图的相关知识点.最新的项目中要求以矢量图替代传统的.png资源文件,所以特意学习了一下Android中的矢量图相关概念,不得不说 ...

  6. android 学习随笔十二(网络:使用异步HttpClient框架)

    使用异步HttpClient框架发送get.post请求 在https://github.com/  搜索 asyn-http https://github.com/search?utf8=✓& ...

  7. 【安卓开发 】Android初级开发(十二)Android向系统日历中添加事件

    1.首先需要获取权限 <uses-permission android:name="android.permission.READ_CALENDAR" /><us ...

  8. Android高级之十二讲之如何降低应用内存消耗

    安卓应用的内存往往是有限的,从开始的8M到16M,24M,32M,48M,64M等逐步变大,但内存的变大是由于分辨率的提高导致,并不意味着可以随意声明使用内存,而不及时回收(即使Java有自己的垃圾回 ...

  9. 手机分辨率Android教程(十二)-- 使用DisplayMetrics获取手机分辨率

    在本篇文章中,我们主要介绍手机分辨率的内容,自我感觉有个不错的建议和大家分享下 在本章教程中,我们将会习学如何应用DisplayMetrics获得手机分辨率. 是这样的,在Android手机如此风扉寰 ...

最新文章

  1. 从SAP社区上的一篇博客开始,聊聊SAP产品命名背后的那份情怀
  2. linux ssh服务端下载文件,Linux SSH服务端配置文件设置
  3. 手机知识:手机蓝牙有6个使用场景,你都知道吗?
  4. Arrays.deepToString的使用
  5. [译] 使用 python 分析 14 亿条数据
  6. hashset去重原理_9道Java集合面试题,搞定了再去投简历吧!
  7. 字符设备驱动 架构分析
  8. php 修改图像大小,php 修改图片大小
  9. 摸鱼摸累了,看几个有趣的网站
  10. 介绍一款rar文件密码破解利器——RAR Password Unlocker
  11. 相敬如宾 你将获得更多敬重
  12. 非淡泊无以明志,非宁静无以致远
  13. 848. Shifting Letters**
  14. stream流的常用方法
  15. 726. 原子的数量
  16. 【机器学习】sklearn机器学习入门案例——使用k近邻算法进行鸢尾花分类
  17. 安卓各大应用商店上架注意事项汇总
  18. Tkinter 组件详解(十八):PanedWindow
  19. 一个项目中不能同时出现两个main函数
  20. delphi 用MDAC微软数据库访问组件的dll动态库

热门文章

  1. Python 爬取朋友圈最新方法!!(文末赠书)
  2. python怎么清理垃圾和缓存_怎么才能正确清理电脑的缓存垃圾?
  3. C++ 两两交换链表中的节点
  4. 流程图设计入门指南 —— 以 Draw.io 为例
  5. windows 重启后电脑时间不准怎么办?
  6. ubuntu系统中webpy的使用
  7. Tomcat网站服务
  8. python打印小星星案例详解_音乐案例 《小星星》
  9. poi中excel锁定行列问题
  10. 天耀18期 – 6.面向对象-类和对象【作业】.