Android学习笔记(十)BroadcastReceiver初体验

  BroadcastReceiver是Android系统的四大组件之一,本质是一种全局的监听器,用于接收系统全局的广播消息。真因为如此,BroadcastReceiver可以很方便的是实现系统中不同组件之间的通讯。

一、创建BroadcastReceiver

  创建一个BroadcastReceiver很简单,只需创建一个BroadcastReceiver的子类即可:

public class MyReceiver extends BroadcastReceiver {
	@Override
	public void onReceive(Context context, Intent intent) {
		//如果onReceive内的操作10s内没有执行完成,Android会认为该进程无响应,所以不要再此作耗时操作
	}
} 

二、两种指定Receiver匹配的Intent的方式

  第一种:在AndroidManifest.xml文件中配置,如下:

<receiver android:name="com.codingblock.receiver.MyReceiver">
             <intent-filter>
                 <action android:name="com.codingblock.receiver.action.MyReceiver"/>
             </intent-filter>
</receiver> 

  第二种:在代码中动态注册,如下:

MyReceiver receiver = new MyReceiver();
registerReceiver(receiver, new IntentFilter("com.codingblock.receive.intent.action.MyReceiver")); 

三、启动一个BroadcastReceiver

  BroadcastReceiver用于接收程序(包括用户开发的程序和程序内建的系统)所发出的Broadcast Intent,启动一个BroadcastReceiver只需两步:

  第一步:创建一个需要启动BroadcastReceiver的Intent。

  第二步:调用Context的sendBroadcast()方法或sendOrderedBroadcast()方法来启动Intent;

  当一个Broadcast Intent被发出后,所有匹配该Intent的Receiver都有可能被启动。 

  当然,对Receiver不同的注册方式,需要用不同的方式去启动,两种注册方式对应的启动方法如下:

  在AndroidManifest.xml中配置的Receiver(2中第一种方法),启动方式如下:

Intent intent = new Intent(MainActivity.this, MyReceiver.class);
sendBroadcast(intent);

   在代码中动态注册的Receiver(2中第二种方法),启动如下:

Intent intent = new Intent("com.codingblock.receive.intent.action.MyReceiver");
sendBroadcast(intent);

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏向治洪

任务管理器(ActivityManager)

任务管理器(ActivityManager) Android中ActivityManager类似于Windows下的任务管理器,能得到正在运行程序的内容等信息 ...

2205
来自专栏游戏杂谈

as 3加载mp3

552
来自专栏岑玉海

Spark源码系列(三)作业运行过程

作业执行 上一章讲了RDD的转换,但是没讲作业的运行,它和Driver Program的关系是啥,和RDD的关系是啥? 官方给的例子里面,一执行collect方...

2764
来自专栏Android 研究

Android系统启动——5 zyogte进程(Java篇)

上一篇文章,我们知道在AndroidRuntime.cpp的start()函数里面是调用的Zygoteinit类的main()函数,那我们就继续研究

1322
来自专栏CodingBlock

Android查缺补漏(IPC篇)-- 进程间通讯之AIDL详解

本文作者:CodingBlock 文章链接:http://www.cnblogs.com/codingblock/p/8436529.html

744
来自专栏后端之路

junit测试之第三方组件mock

今天某个一直稳定运行的测试挂了,没有开发同学出来认领。 ? 对应模块的小伙伴询问此处依赖的环境是哪个,可以去调查失败的原因。 好吧,回顾一下关于第三方组件mo...

2075
来自专栏精讲JAVA

Spring Boot 自动配置的 “魔法” 是如何实现的?

Spring Boot是Spring旗下众多的子项目之一,其理念是约定优于配置,它通过实现了自动配置(大多数用户平时习惯设置的配置作为默认配置)的功能来为用户快...

872
来自专栏大前端_Web

easyUI组件datagrid的二次封装

版权声明:本文为吴孔云博客原创文章,转载请注明出处并带上链接,谢谢。 https://blog.csdn.net/wkyseo/articl...

823
来自专栏图像识别与深度学习

Bluetooth4_3运行流程(连接发射器SN00000009)

2206
来自专栏高性能服务器开发

redis网络通信模块源码分析(中)

客户端fd的触发可读事件后,回调函数是readQueryFromClient。该函数实现如下(文件networking.c文件中):

942

扫码关注云+社区