原创 android之广播机制介绍

2021-12-1 16:00 574 12 12 分类: 软件与OS 文集: android studio

广播(Broadcast)是一种广泛用于应用程序之间传递消息的机制,是 Android系统的四大组件之一。广播机制包含3 个基本要素广播(Broadcast),用于发送广播;广播接收器(BroadcastReceiver),用于接收广播;意图内容(Intent),用于保存广播相关信息的媒介

广播分为两个方面广播发送者和广播接收者(Broadcast Receiver),在 Android 系统中很多操作完成以后都会发送广播,比如说发送短信息、打出一个电话、开机或者网络状态改变和电量改变等。如果某些应用程序想要在这些操作完成以后做一些相应的处理,就可以对这些广播做接收。这个广播跟传统意义中的电台广播有些相似,只是传统电台广播发送的是语音而 Android系统发送的是目的意图 Intent。之所以叫广播,就是因为它与传统的广播很相似,只负责播放而不管接收者"听不听",也就不管接收方如何处理。

Android中的每个应用程序都可以对自己需要的广播进行注册,这样该程序就可以接收到自己需要的广播内容,这些广播可能是来自于系统的,也可能是来自于其他应用程序的。Android 提供了一套完整的 API,允许应用程序自由地发送和接收广播。

Android 中的广播按照发送类型可以分为两种普通广播和有序广播。

 

普通广播(Normal broadcasts)是一种完全异步执行的广播,效率较高,在广播发出之后,所有的广播接收者甚至可能会在同一时刻接收到这条广播消息,因此它们之间没有任何先后顺序可言。

有序广播(Ordered broadcasts)则是一种同步执行的广播,在广播发出之后,同一时刻只会有一个广播接收者能够收到这条广播消息,当这个广播接收者中的逻辑执行完毕后,广播才会继续传递。广播接收者是有先后顺序的,优先级高的广播接收者可以先收到广播消息,并且前面的广播接收者还可以截断正在传递的广播,使后面的广播接收者无法收到广播消息。

 

在开发中,广播一般会在下面几种情况下使用

 

同一App 内部的同一组件内的消息通信(单个或多个线程之间)。

同一App内部的不同组件之间的消息通信(单个进程)。

同一App 具有多个进程的不同组件之间的消息通信。

不同App组件之间的消息通信。

●Android系统在特定情况下与App 之间的消息通信。

在这里我们可以看到 Broadcast 也可以在不同 App 应用之间进行消息通信。如果我们开发一个应用就需要在允许的情况下自动填充短信中的验证码,那么这时要监听用户短信,短信和自己的 App 就处在不同的进程之间。Activity Service 在某些情况下的通信也可以借助Broadcast,这时就是在同一进程不同组件之间的消息通信。

  另外,需要注意的是,当我们通过广播接收者处理相应的广播时,不推荐进行任何耗时操作,因为在广播接收器中是不允许开启线程的,当 onReceive()方法运行了较长时间而没有结束时,程序就会报错。因此广播接收器更多的是演一种打开程序其他组件的角色,比如创建一条状态栏通知或者启动一个服务等。

android studio工具及手机模拟器以及更多工程源代码下载请前往微信公众号:大鸟科创空间,回复:android studio即可获取。

作者: 大鸟科创空间, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-3949041.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

文章评论0条评论)

登录后参与讨论
相关推荐阅读
大鸟科创空间 2022-01-18 18:06
Android之WebView用法
除了HTTP通信与 Socket 通信两种主要的网络技术外,在 Android 中还提供了一种加载和显示网页的技术—WebView。这可以让我们去处理一些特殊的需求,比如像微信那样在应用程序里展示网页...
大鸟科创空间 2022-01-07 14:18
Android之Socket实例
    Socket(套接字)是对 TCP/IP 协议的封装和应用,根据底层封装协议的不同,Socket 的类型可以分为流套接字(streamsocket)和数据报套接字(data...
大鸟科创空间 2021-12-24 14:38
Android之本地广播的使用
前面我们发送和接收的广播全部属于系统全局广播,即发出的广播可以被其他任何应用程序接收到,并且我们也可以接收来自于其他任何应用程序的广播。这样就很容易会引起安全性的问题,比如说我们发送的一些携带关键性数...
大鸟科创空间 2021-12-15 12:50
自定义广播实例
我们应该已经学会了通过广播接收者来接收系统广播的内容,但是在实际开发中,仍需要自定义一些广播。下面我们就来讲解如何在应用程序中发送自定义的广播。发送广播很简单,只需要声明一个意图,然后使用Contex...
大鸟科创空间 2021-12-07 13:04
Android之动态注册广播实例
Android内置了很多系统级别的广播,我们可以在应用序中通过监听这些广播来得到各种系统的状态信息,比如手机开机完成后会发出一条广播、电池的电最发生变化会发出一条广播、时间或时区发生改变也会发出一条广...
广告
EE直播间
更多
我要评论
0
12
1
2
3
4
5
6
7
8
9
0
广告
关闭 热点推荐上一条 /4 下一条