android广播没用使用sendbroadcast怎么就能发送

android广播没用使用sendbroadcast怎么就能发送,第1张

1创建需要启动的BroadcastReceiver的Intent。 2调用Context的sendBroadcast()或sendOrderedBroadcast()方法来启动指定的BroadcastReceiver。 当应用程序发出一个BroadcastIntent之后,所有匹配Intent的BroadcastReceiver都有可能被启动。 由于BroadcastReceiver本质上属于一个监听器,因此实现BroadcastReceiver也非常简单。只要重写BroadcastReceiver的onReceiver(Context context,Intent intent)方法即可。 实现了BroadcastReceiver后,就应该指定该BroadcastReceiver能匹配的Intent。此时有两种方法: 1使用代码进行指定,调用BroadcastReceiver的Context的registerReceiver(BroadcastReceiver receiver,IntentFilter filter) 2在AndroidManifestxml文件中配置。《赠人玫瑰手有余香,祝您好运一生一世,如果回答有用,请点“好评”,谢谢^_^!》

BroadcastReceiver(广播接收器)是Android四大组件之一,顾名思义,通过广播的方式进行消息传递,其本质是一个全局的监听器,可以监听到各种广播,可以用来实现不同组件之间的通信。广播最大的特点就是发送方并不关心接收方是否接到数据,也不关心接收方是如何处理数据的,通过这样的形式来达到接、收双方的完全解耦合。

又称无序广播,这种广播完全是异步的,所有与广播Intent匹配的BroadcastReceiver,都可以收到这条广播,并且不分先后顺序,视为同时收到,通过ContextsendBroadcast()方法发送。这种广播的效率比较高,但缺点是接收器不能将处理结果传递给下一个接收器,并且无法在中途终止广播。

这是一种同步执行的广播,通过ContextsendOrderedBroadcast()方法发送,这种广播发出后,通过receiver的intent-filter中的android:priority属性来设置优先级,优先级从-1000~1000,数越大,优先级越高,使用setResult()方法把结果传递给下一个接收者,通过getResult()方法获取上一个接收者传递过来的结果,并可以通过abortBroadcast()方法丢弃该广播,使该广播不再传递给下一个接收者。

粘性广播通过ContextsendStickBroadcast()方法来发送,用此方法发送的广播会一直滞留,当有匹配此广播的接收器被注册后,该广播接收器就会收到此广播。使用此广播时,需要获得BROADCAST_STICKY权限。(在 android 50/api 21后不再推荐使用)

Android系统中内置了多个系统广播,只要涉及到手机的基本 *** 作,基本上都会发出相应的系统广播。如:开启启动,网络状态改变,拍照,屏幕关闭与开启,点亮不足等等。每个系统广播都具有特定的intent-filter,其中主要包括具体的action,系统广播发出后,将被相应的BroadcastReceiver接收。系统广播在系统内部当特定事件发生时,有系统自动发出。

以上广播都属于全局广播,发出去的广播,只要有匹配的接收者,就可以收到广播。这样一来会造成一些问题,一是消耗性能,二是容易引起安全性的问题,为了能够简单的解决这方面的问题,Android引入了一套广播本地广播机制,使用该机制发出的广播只能够在本应用内部进行传递,并且广播接收器也只能接收来自本应用发出的广播。

使用方法
1注册本地广播接收器

2发送本地广播

3注销本地广播接收器

本文用到的BroadcastReceiver

Android 80(API级别26)取消大部分静态注册广播,建议使用动态广播
>

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13375424.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-24
下一篇 2023-07-24

发表评论

登录后才能评论

评论列表(0条)

保存