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

使用广播-BroadcastReceiver最详细解析

标题图 女孩:BroadcastReceiver是什么呀?...男孩:Broadcast是广播的意思,在Android中应用程序之间的传输信息的机制,BroadcastReceiver是接收广播通知的组件,广播和广播接收器是Android中需要了解的,那么怎么样去了解呢...广播传递信息告诉我们要做什么,通知信息或传递数据等。广播接收器是用来接收来自系统和应用的广播。 在Android中提供了两种主要的类型广播:标准广播和有序广播。 什么是广播呢?...广播注册分动态和静态两种: 动态注册,需要继承BroadcastReceiver的,并重写onCreate()方法,和onReceive()方法,在onReceive()方法中,要实例接收器和IntentFilter...简化: 重写onCreate() 重写onDestroy() extends BroadcastReceiver 重写onReceive() 静态注册,只要在配置文件中修改代码即可,在AndroidManifest.xml

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

    【Android】Broadcasts详解

    系统会创建一个新的BroadcastReceiver组件对象来处理接收到的广播。这个对象只在调用onReceive(Context, Intent)方法期间有效。...如果那个进程只拥有一个在应用清单中定义的接收器,那么当从onReceive()返回后,系统会把它当作一个低优先级的进程,当其它优先级更高的进程需要更多内存的时候,它就可能被杀掉。...> 或者在代码中这样定义一个上下文相关的receiver: IntentFilter filter = new IntentFilter(Intent.ACTION_AIRPLANE_MODE_CHANGED...为了避免这种情况,优先考虑上下文相关的广播接收器,而不是在应用清单中定义。有时,Android系统会强制要求使用上下文相关的广播接收器。...要了解更多信息,参考对进程的影响小节,要执行耗时的操作,我们建议: 在receiver的onReceive()中调用goAsync(),然后将BroadcastReceiver.PendingResult

    83620

    Android插件化技术之旅 2-广播插件的实现与安装apk原理

    我们再来回顾一下如何启动一个插件: 首先,我们要明白一个插件是没有安装到手机上的,所以我们需要将上下文(Context)传递到插件中,插件用到上下文到方法需要复写....); void onReceive(Context context, Intent intent); } 然后在BaseActivity中重写registerReceiver 和sendBroadcast...,其实就是启动了宿主定义好的的一个空壳的广播,然后通过DexClassLoader反射插件中的广播类,然后通过继承的接口,来进行方法的调用和参数的传递. public class ProxyBroadcast...= null) { bordcast.onReceive(context, intent); } } } 同理,在宿主方法中需要做一些处理,new ProxyBroadcast...插件静态广播实现原理: 我们知道任何插件都是没有安装到手机上的,静态广播是注册在AndroidManifest中,那么,我们就不能通过上述那样轻松的拿到类名进行反射了,如下代码 android

    65920

    Android入门教程 | 广播机制 Broadcast

    不要在onReceive()方法中添加过多的逻辑操作或耗时的操作。因为在广播接收器中不允许开启线程,当onReceive()方法运行较长时间而没结束时,程序会报错。...接收器接到有序广播后,可以完全地截断广播,或者传递一些信息给下一个接收器。 有序广播的顺序可受android:priority标签影响。同等级的接收器收到广播的顺序是随机的。...BroadcastReceiver,LocalBroadcastReceiver 区别 广播接收者: (1)用于应用间的传递消息 (2)由于跨应用,存在安全问题 本地广播接收者: (1)广播数据在本应用范围内传播...在 manifest 和代码中如何注册和使用 BroadcastReceiver (1)在AndroidManifest中静态注册,然后直接使用。...(3)注册发送后,在BroadcastReceiver(自定义一个接收器继承自BroadcastReceiver)的onReceive中接收广播并处理广播。 6.

    1.8K30

    BroadcastReceiver详解以及应用

    这就讲到了Android四大组件之一:BroadcastReceiver,翻译是广播接收者。意思就是接收广播用的。他可以接收到系统开机完成的广播,以及系统电量不足的广播,以及系统收到短信的广播,等等。...而在Android中的广播机制与现实中一样,发送广播的是Broadcast,接收广播的BroadcastReceiver及广播之间传递数据的Intent。...context是上下文,Intent就是广播携带的数据。...BroadcastReceiver有两种注册方式: 静态注册(在AndroidManifest.xml清单文件中注册) 动态注册(在代码中注册) 广播接收者静态注册方式 当我们需要一直接收某种广播时...如果想使得本APP的广播不被外界的广播所干扰,可以在receiver节点添加android:exported=”false”属性 ,这样系统遍历全部APP清单文件的广播接收者时不会对本receiver进行判断及处理

    91531

    Android点将台:传令官(使用级)

    AndroidManifest.xml中配置意图过滤器来匹配 关于intent的相关知识,见前一篇,这里不做解释 1.写一个类继承自BroadcastReceiver /** * 作者:张风捷特烈...动态使用分为注册和注销,不需要在AndroidManifest.xml注册 只有在注册后和注销前的时间段才能使用,否则广播无效(即onReceive方法不会掉) 1.注册广播与发送消息 /**...1元 之后将石头给了雕刻家,并将预期的价值1000元传递给雕刻家 之后雕刻家将石头给了宝石家,并将预期的价值10W元传递给宝石家 之后宝石家将石头给了收藏家,并将预期的价值100W元传递给收藏家...有序广播的动态注册形式的代码, 静态注册在AndroidManifest.xml里配置类似,就不废话了 还有一点注意的是sendOrderedBroadcast方法调用时传入的BroadcastReceiver...action就行了 五、使用广播更新音乐进度条 在绝命暗杀官[-Service-]中实现过一个音乐播放条,其中音乐的播放进度是靠Handler+回调实现的 BroadcastReceiver本职就在于通知

    12210

    Android 广播机制(Broadcast)介绍与使用

    在AndroidManifest.xml中注册称为静态注册。动态注册的刚波接收器一定要取消注册。在onDestroy()方法中调用unregisterReceiver()方法来取消注册。...不要在onReceive()方法中添加过多的逻辑操作或耗时的操作。因为在广播接收器中不允许开启线程,当onReceive()方法运行较长时间而没结束时,程序会报错。...接收器接到有序广播后,可以完全地截断广播,或者传递一些信息给下一个接收器。 有序广播的顺序可受android:priority标签影响。同等级的接收器收到广播的顺序是随机的。...接收器在manifest中申请了相应权限时才能收到这个广播。...在配置文件中声明权限,程序才能访问一些关键信息。 例如允许查询系统网络状态。

    3.1K30

    17 个必须掌握的 BroadcastReceiver 知识点「建议收藏」

    在广播发出之后,同一时刻只有一个广播接收器能够收到这条广播消息,当其逻辑执行完后该广播接收器才会继续传递。...其他 APP 不可能向当前的 APP 发送局部广播,不用担心有安全漏洞被其他 APP 利用。 局部广播比通过系统传递的全局广播的传递效率更高。...: 另一 app 直接发广播就收到了 动态注册的方法: 自己的 app 先代码注册,然后另一个 app 直接发广播即可.- 1.6 BroadcastReceiver 的实现原理是什么?...Android 中的广播使用了设计模式中的观察者模式:基于消息的发布 / 订阅事件模型。...1.7 本地广播 本地广播机制使得发出的广播只能够在应用程序的内部进行传递,并且广播接收器也只能接受来自本应用程序发出的广播,则安全性得到了提高。

    1.7K31

    android学习笔记----自定义广播和系统广播

    ,点击发送无序广播,看到接收方的Toast显示出来了,接收到了广播 有序广播: 是一种同步执行的广播,在广播发出之后,同一时刻只会有一个广播接收器能够收到这条广播消息,当这个广播接收器中的逻辑执行完毕之后...,广播才会继续传递。...scheduler Handler:一个自定义处理程序,用于调度结果收发器回调;如果为NULL,则将在上下文的主线程中调度它。 initialCode int: 结果代码的初始值。...2、全局广播:发送的广播事件可被其他应用程序获取,也能响应其他应用程序发送的广播事件(可以通过 exported–是否监听其他应用程序发送的广播 在清单文件中控制) 全局广播既可以动态注册,也可以静态注册...)方法中添加过多的逻辑或进行任何耗时操作,因为在广播接收器中是不允许开启线程的,当onReceive()方法进行了较长时间而没有结束时,程序就会报错。

    1.7K20

    浅谈android Service和BroadCastReceiver

    普通广播是完全异步的,可以在同一时刻(逻辑上)被所有接收者接收到,消息传递的效率比较高,但缺点是:接收者不能将处理结果传递给下一个接收者,并且无法终止广播Intent的传播;然而有序广播是按照接收者声明的优先级别...另外,有序广播的接收者可以将数据传递给下一个接收者,如:A得到广播后,可以往它的结果对象中存入数据,当广播传给B时,B可以从A的结果对象中得到A存入的数据。 ...3.2广播接收者的响应 在Android中,每次广播消息到来时都会创建BroadcastReceiver实例并执行onReceive() 方法, onReceive() 方法执行完后,BroadcastReceiver...当onReceive() 方法在10秒内没有执行完毕,Android会认为该程序无响应。...BroadcastReceiver一旦结束,此时BroadcastReceiver的所在进程很容易在系统需要内存时被优先杀死,因为它属于空进程(没有任何活动组件的进程)。

    2.1K70

    Broadcasts详解「建议收藏」

    这个对象在调用onReceive(Context, Intent)的时间段内有效,一旦这个方法return,系统就认为该BroadcastReceiver组件不再active,并销毁它。...然而,一旦你的代码从onReceive()返回,BroadcastReceiver就不再active。...因此,您不应该在BroadcastReceiver中启动长时间运行的后台线程。onReceive()执行完后,系统可能杀死进程以随时回收内存,并终止运行在这个进程中的线程。...如果你想用更多时间在后台线程中处理广播,请用下面方法来完成: a、 在onReceive()中调用goAsync(),并且传入BroadcastReceiver.PendingResult。...这会让Receiver在onReceive()返回后保持Active。然而,即使采用这种方法,系统也希望您能在10秒内完成广播。它允许你把工作移动到另一个线程中,避免阻塞主线程。

    83610

    第一行代码——全局大喇叭,详解广播机制

    BroadcastReceiver能接收到这条消息,当这个BroadcastReceiver中的逻辑执行完成后,广播才会继续传递。...每当系统时间发生变化onReceive()方法就会被执行 系统时间发生变化时发出的就是android.intent.action.TIME_TICK的action所以在onCreate()方法中创建一个...在AndroidManifest.xml中对新建的BroadcastReceiver进行配置添加 android:name="com.example.broadcasttest.MY_BROADCAST...()接收两个参数:第一个参数仍然是Intent,第二个参数是与权限相关的字符串,这里传入null 设置BroadcastReceiver的先后顺序 在AndroidManifest.xml中修改MyBroadcastReceiver...所以强制下线的逻辑并不是在MainActivity中写,而应该写在接收这条广播的BroadcastReceiver里,这样强制下线的功能就不会依附于任何界面 静态注册的BroadcastReceiver

    93410

    redis广播模式_广播表

    介绍 BroadcastReceiver 是 Android 的四大组件之一,它作用于应用内、进程间重要的一种通信方式,能够将某个消息通过广播的形式传递给订阅的广播接收器中,下面我们就来分析一下 广播注册到接收到消息...Android 源码到底做了些什么?...又被存储在了 mReceivers 中,这样只要给定一个 Activity 和 BroadcastReceiver ,就可以查看 LoadedAPK 里面是否已经存在相应的广播接收发布器了。...onReceive 时序图 在 Activity 通过 sendBroadcast 发送一个广播最后 Binder 发送给 AMS , AMS 根据这个广播的 Action 类型找到相应的广播接收器,...map 中查询注册了这个广播的 IntentFilter 的 BroadcastReceiver , 然后通过 ReceiverDispatch 将广播分发给各个订阅的对象,从而完成了整个通信过程。

    1.5K10

    Broadcast 使用详解

    3.广播的注册(静态注册、动态注册) 广播的注册分两种,一种在ndroidMfest.xml中静态注册,另一种是在Java代码中动态注册。...在Java中动态注册广播,通常格式如下: //动态注册广播 registerReceiver(BroadcastReceiver, IntentFilter); 动态注册 监听灭屏、点亮屏幕的广播..., screenOffFilter); } } 4.广播的发送(无序、有序、持续) 1.发送无序广播的方法 发送无序广播在Android 中很常见,是一种一对多的关系,主要通过 sendBroadcast...当用户对某些广播感兴趣的话,此时可以获取此广播,然后在onReceive方法中处理接收广播的一下操作。...接受广播类 主要继承 BroadcastReceiver,然后在onReceive方法,过滤广播Action中携带的Intent,然后进行相关处理。 接收开机广播的方法 1.

    1.1K20

    Android查缺补漏--BroadcastReceiver的类型与使用

    一个完整的广播机制,需要具有以下三个要素: 发送广播的Broadcast 接受广播的BroadcastReceiver 传递信息的Intent 广播的注册分为静态注册和动态注册: 静态注册:静态注册的广播是指在...普通广播中,接受者不能将处理结果传递给下一个接收器,也无法终止广播的传播。...有序广播的接收者和给下一个接收者传递数据,并且接收者在收到广播之后可以抛弃广播,使广播不再向后传递。...我们在MyBroadcast6Receiver中添加abortBroadcast()方法: public class MyBroadcast6Receiver extends BroadcastReceiver...最后想说的是,本系列文章为博主对Android知识进行再次梳理,查缺补漏的学习过程,一方面是对自己遗忘的东西加以复习重新掌握,另一方面相信在重新学习的过程中定会有巨大的新收获,如果你也有跟我同样的想法,

    71870

    【Android 安全】DEX 加密 ( Application 替换 | 分析 BroadcastReceiver 组件中调用 getApplication() 获取的 Application )

    () 方法分析 ---- 在 BroadcastReceiver 中的 onReceive 方法中的 Context context 参数 , 打印出来是 android.app.ReceiverRestrictedContext..., 是在 ActivityThread 中的 Handler H 处理 RECEIVER 消息时 , 在 handleReceiver() 方法中 , 通过调用 ContextImpl 的 getReceiverRestrictedContext.../app/ActivityThread.java 三、 ActivityThread 中的 handleReceiver 方法 ---- 在 handleReceiver 中通过如下方法创建 BroadcastReceiver...方法 , 注意传入的参数就是 context.getReceiverRestrictedContext() , 这就是我们在之前的广播接收者组件中的 onReceive 方法中打印 Context context...getReceiverRestrictedContext() 方法获取的上下文对象 , 在该方法中返回对象创建方式如下 , mReceiverRestrictedContext = new ReceiverRestrictedContext

    1.2K30

    Android Service 服务(二)—— BroadcastReceiver

    三、 BroadcastReceiver生命周期 一个BroadcastReceiver 对象只有在被调用onReceive(Context, Intent)的才有效,当从该函数返回后,该对象就无效的了...因此从这个特征可以看出,在所调用的onReceive(Context, Intent)函数里,不能有过于耗时的操作,不能使用线程来执行。对于耗时的操作,应该在startService中来完成。...中,会处理Activity启动的 sendBroadcast(intent); 广播,通过实现onReceive()方法,解析Activity中Intent的Bundle数据。...(intent); 关闭了service服务,在Service中会调用3中的onDestroy()停止并释放音乐资源,后才执行this.finish(); 关闭了本Activity窗体 六、BroadcastReceiver...中的receiver和动态注册在PlayMusicRecevicer注释的代码部分,两者选择一种即可 代码下载 参考推荐: Android Service生命周期及用法 Android之BroadcastReceiver

    1.6K20
    领券