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 条评论
登录 后参与评论

相关文章

来自专栏面朝大海春暖花开

Tomcat优化

T omcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本 catalina.sh 中设置 JAVA_OPTS参数。

4612
来自专栏Java成神之路

Tomcat_总结_02_单机多实例

上图中的 CATALINA_HOME 指Tomcat安装路径,CATALINA_BASE 指实例所在位置。 CATALINA_HOME 路径下只需要包含 bin...

651
来自专栏Hadoop实操

CM告警SNMP对接补充

Fayson在前面的文章《如何通过Cloudera Manager配置使用SNMP方式转发告警》也介绍了使用SNMP的方式对接,对接SNMP告警时CM提供了告警...

1603
来自专栏格子的个人博客

CentOS7下安装Mesos教程

Mesos是根据Linux内核相同原则而创建的,而不同点仅是在于抽象的层面。Mesos内核运行在每一个机器上,同时通过 API 为各种应用提供跨数据中心和云的资...

1052
来自专栏北京马哥教育

你所不知道的linux匿名管道知识

豌豆贴心提醒,本文阅读时间5分钟 相信很多在linux平台工作的童鞋, 都很熟悉管道符 '|', 通过它, 我们能够很灵活的将几种不同的命令协同起来完成一件任...

2855
来自专栏维C果糖

在 Windows 系统下安装 IntelliJ IDEA 的方法

首先,进入官网下载 IntelliJ IDEA 可执行文件:https://www.jetbrains.com/idea/ ? 如上图所示,进入“Downloa...

2245
来自专栏Jerry的SAP技术分享

CRM product UI里assignment block的显示隐藏逻辑

我们在product overview page里能看到很多的assignment block。但是runtime的时候真正显示出来的内容只是configura...

2936
来自专栏运维小白

16.3 安装Tomcat

安装Tomcat目录概要 cd /usr/local/src wget https://mirrors.tuna.tsinghua.edu.cn/apache/...

2438
来自专栏猛牛哥的博客

centos使用rsync同步文件时遇到的莫名错误解决方法

2704
来自专栏mukekeheart的iOS之旅

Android基础总结(4)——广播接收器

  在Android中的每个应用程序可以对自己感兴趣的广播进行注册,这样该程序就只会接收自己所关心的广播内容,这些广播可能来自于系统的,也可能来自于其他应用程序...

25910

扫码关注云+社区