四大组件之广播接收者BroadcastReceiver

新建广播接收器

需要新建一个类继承类BroadcastReceiver,并且重写其中的方法onReceive(),不要在这个方法中添加过多的逻辑或者进行任何耗时的操作,因为在广播接收者中是不允许开启线程的。

当接收到指定的广播时就会执行onReceive()方法中的内容。

注册广播接收器可以动态也可以静态。

这里简单介绍一下静态:

在AndroidManifest.xml的<application></application>中间写入<receiver></receiver>,在这个标签中写入你要注册的接收器和要接收的广播

<receiver android:name=".MyBroadcastReceiver">
                <intent-filter >
                    <action android:name="你要接收的广播" />
                </intent-filter>
            </receiver>

MyBroadcastReceiver为接收器,也就是创建的类。action中的name中写的是要接收的广播,可以是系统广播,也可以是自定义的广播。

有时接收广播是需要权限的,这个需要注意。

新建广播

广播有两种:标准广播和有序广播

标准广播就是任何注册接收此广播的程序都可以接收到,有序广播就是按照优先级进行接收,并且优先级高的可以通过abortBroadcast(),截断广播,后面的接收器将会收不到广播。

广播也是用Intent来写的比如

 Intent intent=new Intent("广播名");
 sentBroadcast(intent);

上面的广播是sentBroadcast()发出,这个发出的就是标准广播。使用sentOrderedBroadcast()发出的是有序广播。

当发出的是有序广播时,注册的内容就需要添加优先级priority

 <receiver android:name=".MyBroadcastReceiver">
                 <intent-filter  android:priority="100" >
                     <action android:name="你要接收的广播" />
                 </intent-filter>
             </receiver>

本地广播

上面发出的广播都是系统全局广播,很容易出现安全性问题。使用本地广播可以简单解决安全性问题

主要使用一个LocalBroadcastManager来对广播进行管理,并提供了发送广播和注册广播接收器的方法

上面只是简单介绍一下广播接收者,如果有什么问题可以在评论区留言,谢谢!

我的android学习经历29的更多相关文章

  1. 我的android学习经历

    我为什么选择android? 我基本上前一年的时间都是在学习java的语法和线程之类的,没有注意java的分类,所以到现在慢慢接触到深处的时候我了解到,java的优势主要在web,而我不是特别喜欢网页 ...

  2. 我的android学习经历36

    最近把android的基础知识都学的差不多了,也写了许多demo,就想自己写一个app,可是写到后面的时候发现很混乱,所以还是得写一些文档,用xml语言写一下基础的类以及一些其他的东西.所以要想写一个 ...

  3. 我的android学习经历27

    前几天忙着学校的互联网+项目比赛,没有时间学习android和发一些东西,主要是这两天太累了,我是项目组长,好多东西去弄,今天已经交稿去进行初赛. 马上收拾收拾心情,继续我的andorid菜鸟之路 加 ...

  4. 我的android学习经历23

    学习fragment时遇到的问题 这几天学习fragment静态加载时遇到这样的问题: java.lang.RuntimeException: Unable to start activity Com ...

  5. [转] Android学习系列(29)--App调试的几个命令实践

    在Android的应用开发中,我们会用到各种代码调试:其实在Android的开发之后,我们可能会碰到一些随机的问题,如cpu过高,内存泄露等,我们无法简单的进行代码调试,我们需要一个系统日志等等,下面 ...

  6. 我的android学习经历9

    给android的activity添加背景图片 1.你可以在网上下载android的图片,也可以制作自己的图片,图片的后缀为.png,也就是png格式的图片(注意图片的大小要适合你的手机屏幕或者AVD ...

  7. 我的android学习经历7

    android签名后报错的问题 Duplicate id @+id/imageView, already defined earlier in this layout,android生成报错 这个是项 ...

  8. 我的android学习经历5

    android在strings.xml文件中,写string对象时,如何加入空格 <string name="password">密    码:</string& ...

  9. 我的android学习经历40

    为listview设置背景,并且不随拖动改变 <ListView android:id="@+id/list_view" android:layout_width=" ...

随机推荐

  1. 夺命雷公狗---DEDECMS----32dedecms电影网评价星星功能的实现

    我们要完成的是电影网的评价功能: 我们要做这个功能前,就要让前期工作准备好,首先让鼠标移动到星星时,星星的左边都是黄色的星星右边还是灰星星. 我们打开内容页的模版看下他代码是如何组成的: 我们在这里可 ...

  2. javascript加载顺序

    javascript加载顺序 <script type="text/javascript" src="jquery.js"></script& ...

  3. mysql中时间类型datetime,timestamp与int的区别

    在mysql中存储时间,我们可以用datetime 格式,timestamp格式,也可以用int格式.那么我们设计的时候该如何考虑呢? 首先,我觉得应该明白这几个格式究竟是如何的,然后看看他们的区别, ...

  4. android 中的几种目录

    1. context.getExternalFilesDir()     ==> /sdcard/Android/data/<package_name>/files/ 一般放一些长时 ...

  5. 关于JDK,tomcat,MyEclipse的配置

    1.下载安装JDK 在自定义安装路径时,jdk和之后的jre文件夹是属于平行结构,我的安装路径为:D:\jdk\jdk1.6.0_43和D:\jdk\jre6 然后是对环境变量的配置, 计算机→属性→ ...

  6. 【PHP设计模式 08_CeLue.php】策略模式

    <?php /** * [策略模式]----和"简单工厂"模式很相似 * 根据不同运算符计算两个数的运算结果 * 常规方式就是判断运算符然后进行if...else的操作 * ...

  7. 如何修改ECSHOP后台管理中心的Title信息

    下图中红色圈定的部分就是本次修改要改的地方 修改方法其实很简单的:打开语言包文件  /languages/zh_cn/admin/common.php 将 $_LANG['app_name'] = ' ...

  8. android 6.0权限处理

    在模拟器测试好的程序,运行在mate8上面一直崩,经多方查探才找到以下博文,方法还没掌握,但也算是找到原因了: http://***/article/android-6-0-runtime-permi ...

  9. 【转】启动 Eclipse 弹出“Failed to load the JNI shared library jvm.dll”错误的解决方法! .

    转载地址:http://blog.csdn.net/zyz511919766/article/details/7442633 原因1:给定目录下jvm.dll不存在. 对策:(1)重新安装jre或者j ...

  10. (翻译)理解Java当中的回调机制

    原文地址:http://cleancodedevelopment-qualityseal.blogspot.com/2012/10/understanding-callbacks-with-java. ...