专栏首页CodingBlockAndroid学习笔记(十)BroadcastReceiver初体验

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

相关文章

  • Android学习笔记(十二)BroadcastReceiver的有序广播和优先级

      前两篇博文中简单整理了普通广播,其实还有有序广播,有序广播在开发中也是比不可少的,可以给广播接收者设定优先级来控制接受顺序,并却可以中断广播传递等等。 一、...

    codingblock
  • Android学习笔记(十一)BroadcastReceiver动态注册、注销示例

      在上一篇博文中简单介绍了一下BroadcastReceiver的相关知识点,本篇举一个在代码中动态的注册、注销BroadcastReceiver的栗子。 1...

    codingblock
  • Java数据结构和算法总结-字符串相关高频面试题算法

    前言:周末闲来无事,在七月在线上看了看字符串相关算法的讲解视频,收货颇丰,跟着视频讲解简单做了一下笔记,方便以后翻阅复习同时也很乐意分享给大家。什么字符串在算...

    codingblock
  • 一次900万+数据量的 SQL 查询优化分析【上百倍性能优化】

    有一张流水表,未分库分表,目前的数据量为950w,分页查询使用到了limit,优化之前的查询耗时17s左右 (execution: 16s831ms, fetc...

    数据和云
  • 【高级应用】PowerBI增量刷新原理揭秘及实战详解

    随着 PowerBI 在 2020年2月的更新,增量刷新应该被投票投成了大众货,现在所有小伙伴都可以使用这个功能了。当然,其前提是 PowerBI Pro 帐号...

    BI佐罗
  • 用 Identity Server 4 来保护 Python web api

    项目的早期后台源码: https://github.com/solenovex/asp.net-core-2.0-web-api-boilerplate 下面开...

    企鹅号小编
  • BAT投资AI已超硅谷巨头,北京成风投增长第一城

    据英国《每日电讯报》,最新研究显示,在今年的人工智能和机器学习投资竞赛中,中国最大的科技公司已经超过了硅谷的科技巨头。

    新智元
  • 未来人工智能发展八大新趋势

    AI芯片包含三大类市场,分别是数据中心(云端)、通信终端产品(手机)、特定应用产品(自驾车、头戴式AR/VR、无人机、机器人...)。

    用户2746302
  • 行业|中美人工智能创投现状与趋势研究报告

    人工智能能否完成人类历史上的颠覆式创新?开启人类新时代?60余年来人们对这个话题一直争论不休。

    fishexpert
  • 报告 | 中美AI创投现状与趋势

    量子位作为合作媒体方,为大家带来《2017年中美人工智能创投现状与趋势研究报告》及解读 ? 人工智能开启的微智时代 AI能否完成人类历史上的颠覆式创新,开启人类...

    量子位

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动