IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 安卓学习的点点滴滴,关于广播的理解 -> 正文阅读

[移动开发]安卓学习的点点滴滴,关于广播的理解

有关于广播的操作

1.广播来自哪里

系统广播

Android内置了很多系统级别的广播,我们可以在应用程序中通过监听这些广播来得到各种系统的状态信息。比如手机开机完成后会发出一条广播,电池的电量发生变化会发出一条广播,时间或时区发生改变也会发出一条广播,等等。

自定义广播

通过Intent类定义广播,通过sendBroadcast方法将之发送出去

sendBroadcast(Intent("aaa")) //发送自定义广播

2.接收广播

注册广播的方式一般有两种,在代码中注册和在AndroidManifest.xml中注册,其中前者也被称为动态注册,后者也被称为静态注册。

动态注册

1.继承BroadcastReceiver类,实现onReceive方法,onReceive方法中的接受广播后所执行的操作

2.创建intentFilter和a类的实例(a类为BroadcastReceiver的子类)

3.添加广播,使用用intentFilter中和addAction方法进行添加

4.进行注册,调用registerReceiver方法,第一个参数是实例化的a类,第二个方法是实例化的intentFilter

var intentFilter: IntentFilter = IntentFilter()
var a: NetworkChangeReceiver = NetworkChangeReceiver()
intentFilter.addAction("aaa")//想接收什么广播,就在此添加
registerReceiver(a, intentFilter)//进行注册
//取消注册
override fun onDestroy() {
 ? ?super.onDestroy()
 ? ?unregisterReceiver(networkChangeReceiver)
}
class a : BroadcastReceiver() {
 ? ?override fun onReceive(context: Context?, intent: Intent?) {
 ? ?//具体操作
    }
}

静态注册

1.创建广播接收器→New→Other→BroadcastReceiver

class MyBroadcastReceiver : BroadcastReceiver() {
 ? ?override fun onReceive(context: Context, intent: Intent) {
 ? ? ? ?Toast.makeText(context, "静态注册", Toast.LENGTH_SHORT).show()
 ?  }
}

些类也继承了BroadcastReceiver类,所以在此类中的操作与动态注册中是相同的

2.在AndroidManifest.xml中进行注册,打开AndroidManifest.xml,我们可以看到多了以下下几行代码,这是程序已经自动帮我们进行注册了,receiver(接收者)

<receiver android:name=".MyBroadcastReceiver">
</receiver>

3.添加想要接收的广播,在xml中添加意图过滤器,就可以在其中加入自己想要接受的广播

<receiver android:name=".MyBroadcastReceiver">
 ? ?<intent-filter>
 ? ? ? ? ? ?<action android:name="aaa"/>
 ? ?</intent-filter>
</receiver>

总结

动态注册的广播接收器可以自由地控制注册与注销,在灵活性方面有很大的优势,但是它也存在着一个缺点,即必须要在程序启动之后才能接收到广播,因为注册的逻辑是写在onCreate()方法中的。静态注册能在程序未启动的情况下就能接受广播执行操作,但远不如动态注册灵活。

生活中的实例,需要联网的软件在未连接网络时给出的的提示,软件的开机自启,应用在wifi状态下自动更新......这都是对广播的应用,

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-10-29 13:09:42  更:2021-10-29 13:12:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 0:45:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码