首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【Android从零单排系列三十八】《Android四大组件——BroadcastReceiver

BroadcastReceiver基本介绍 BroadcastReceiver(广播接收器)是Android中的一个组件,用于接收响应系统或应用发送的广播消息。...在标签内部添加一个或多个标签,用于指定你所关心的广播消息对应的优先级。...在动态注册时,需要按照相应的生命周期管理好BroadcastReceiver的注册反注册,避免内存泄漏。...参数包括上下文Context广播携带的Intent对象,可以通过Intent对象获取传递的数据操作。...可以通过setResultCode()getResultCode()方法设置获取广播的结果代码。 在开发过程中要避免在BroadcastReceiver中进行耗时操作,因为它们是在主线程上执行的。

25110
您找到你想要的搜索结果了吗?
是的
没有找到

Android入门教程 | 广播机制 Broadcast

本地广播(Local Broaddcasts) 只在本App发送接收的广播。注册为本地广播的接收器无法收到标准广播。...使用示例 发送接收广播。分为发送接收方2个App。 使用带权限的广播。系统权限与自定义权限。 使用权限需要在AndroidManifest.xml中声明。如果是自定义权限,需要先添加自定义权限。...全局广播:系统广播,发出的广播可以被其他任何应用程序接收到,并且也可以接受到其他任何应用程序的广播。 3....在实现开机启动服务网络状态改变、电量变化、短信来电时通过接收系统的广播让应用程序作出相应的处理。...在 manifest 代码中如何注册使用 BroadcastReceiver (1)在AndroidManifest中静态注册,然后直接使用。

1.6K30

Android四大组件:BroadcastReceiver史上最全面解析

因此,Android将广播的发送者接收者极大程度解耦,使得系统能够方便集成,更易扩展。...从上面可以看出: 广播发送者广播接收者分别属于观察者模式中的消息发布订阅者,AMS属于中间的处理中心; 广播发送者广播接收者的执行是异步的,发出去的广播不会关心有无接收者接收,也不确定接收者到底是何时才能接收到...发送广播使用如下: Intent intent = new Intent(); //对应BroadcastReceiver中intentFilter的action intent.setAction(BROADCAST_ACTION...插入耳机时 Intent.ACTION_HEADSET_PLUG 未正确移除SD卡但已取出来时(正确移除方法:设置–SD卡设备内存–卸载SD卡) Intent.ACTION_MEDIA_BAD_REMOVAL...通过intent.setPackage(packageName)指定报名 具体使用2 - 使用封装好的LocalBroadcastManager类 使用方式上与全局广播几乎相同,只是注册/取消注册广播接收器发送广播时将参数的

1.5K10

Android的广播

发送接收流程 发送接受的过程: 发送 首先在需要发送信息的地方 ,把要发送的信息用于过滤的信息(如action category)封装进intent对象,然后调用 Context.sendBroadcast...() 、sendOrderBroadcast()或sendStickBroadcast()方法,把intent对象以广播的形式发送出去 接收 当intent发送后,所有已经注册的BroadcastReceiver...文件中声明了对应权限的BroadcastReceiver才能就收到; 同样的,如果在注册BroadcastReceiver时指定了可接受的Broadcast的权限,则只有在包的AndroidManifest.xml...虽然 广播的发送接受都是通过intent类,但是广播intent完全 启动activity的intent不同。 BroadcastReceiver是无法看到启动activity的intent的。...LocalBroadcastManager 来管理的;发送的注册都是 LocalBroadcastManager实例来管理 本地广播 广播一样 分为 异步广播同步广播 发送本地广播 Intent

1K120

Android插件化原理解析——广播的管理

回想一下我们日常开发的时候是如何使用BroadcastReceiver的:注册, 发送接收;因此,要实现BroadcastReceiver的插件化就这三种操作提供支持;接下来我们将一步步完成这个过程。...由于广播的分发过程是在AMS中进行的,而AMS所在的进程BroadcastReceiver所在的进程不一样,因此要把广播分发到BroadcastReceiver具体的进程需要进行跨进程通信,这个通信的载体就是...OK,我们继续跟踪源码,AMS类的registerReceiver方法代码有点多,这里不一一解释了,感兴趣的话可以自行查阅;这个方法主要做了以下两件事: 对发送者的身份权限做出一定的校检 把这个BroadcastReceiver...匹配过程 某一条广播被发出之后,并不是阿猫阿狗都能接收它并处理的;BroadcastReceiver可能只对某些类型的广播感兴趣,因此它也只能接收处理这种特定类型的广播;在broadcastIntentLocked...对于实现静态BroadcastReceiver插件化的问题,有的童鞋或许会想,我们可以借鉴Activity的工作方式——用替身Hook解决。但是很遗憾,这样是行不通的。为什么呢?

73420

Android 监听安装卸载

Android 应用程序的安装卸载事件,是由系统进行监听并全局广播的,支持1.5(android 3)以上 因此,如果想要监听获取应用的安装卸载事件,只需要自定义一个BroadcastReceiver...,来对系统广播进行监听处理 BroadcastReceiver 是系统全局广播监听类, 其主要方法是onReceive(),自定义的广播类继承于它并实现自己的onReceive()处理逻辑 BroadcastReceiver...使用前,需要进行注册监听(xml代码两种方式),不使用时需要注销监听,其生命周期一般为整个应用的生命周期 1, 自定义广播 自定义广播MyInstalledReceiver继承自BroadcastReceiver...,实现其onReceive()方式,具体代码如下: public class MyInstalledReceiver extends BroadcastReceiver { @Override public...= null) { this.unregisterReceiver(installedReceiver); } super.onDestroy(); } 以上xml代码两种注册方式

2.1K30

浅谈android ServiceBroadCastReceiver

1.题记        Android中的服务windows中的服务是类似的东西,服务一般没有用户操作界面,它运行于系统中不容易被用户发觉,可以使用它开发如监控之类的程序。       ...广播接收者(BroadcastReceiver)用于接收广播Intent,广播Intent的发送是通过调用Context.sendBroadcast()、Context.sendOrderedBroadcast...startService 与 bindService区别如下: 生命周期:startService方式启动,Service是通过接受Intent并且会经历onCreateonStart。...当用户在发出意图使之销毁时会经历onDestory而bindService方式启动,与Activity绑定的时候,会经历onCreateonBind,而当Activity被销毁的时候,Service会先调用...>            广播被分为两种不同的类型:“普通广播(Normal broadcasts)”“有序广播(Ordered broadcasts)”。

2.1K70

赵雅智_BroadcastReceiver

BroadcastReceiver 用于接收程序(包含用户开放的程序系统内建程序)所发出的Broadcast intent 耗电量 开机启动 窃取别人短信 窃取别人电话 开发: 创建须要启动的...也是android.content.ContextWrapper类中的方法,它能够将一个指定地址參数信息的Intent对象以广播的形式发送出去。...演示一下这个过程,FirstReceiver、SecondReceiverThirdReceiver的代码例如以下: package com.scott.receiver; import android.content.BroadcastReceiver...异步广播的发送接收: sendStickyBroadcast(intent); 当处理完之后的Intent ,依旧存在。直到你把它去掉。...我们来看一下BootCompleteReceiverMsgPushService的详细实现: package com.scott.receiver; import android.content.BroadcastReceiver

83610

责任链模式

1.定义 责任链模式是行为型设计模式之一,它使多个对象都有机会处理请求,从而避免了请求的发送者接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。...2.实战演练 用三个BroadcastReceiver来演示责任链事件处理 FirstReceiver (当limit==1000的时候获取msg打印并退出,否则添加一个新的msg给下一个Receicer...FirstReceiver"); setResultExtras(b); } } } SecondReceiver(当limit==100的时候获取msg上一个...SecondReceiver"); setResultExtras(b); } } } ThirdReceiver(当limit==10的时候获取msg上一个...msg from MainActivity"); sendOrderedBroadcast(intent, null); 3.总结 1.优点 可以对请求者处理者的关系解耦,提高代码的灵活性

68650

全局事件-广播(Broadcast)

注册取消方法 注册广播接收器的方法是 registerReceiver,注销的方法是unregisterReceiver,定义如下: public Intent registerReceiver(...来去电拦截 广播动作 监听电话状态以用于拦截来去电,来电(监听电话状态)去电的广播动作如下: 来电:android.intent.action.PHONE_STATE 去电:android.intent.action.NEW_OUTGOING_CALL...(intent.getAction())) { Log.d("screen", "off"); } } } 注意事项: 屏幕唤醒休眠的广播,只能通过代码的以动态的方式注册...import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent...intent) 下面的代码发送了一个广播,并添加了广播数据category // 指定广播动作 Intent brdcstIntent= new Intent("com.turing.demo.sendbrdcst.MYBROADCAST

1.1K60
领券