安卓开发(3)-Broadcast-MusicBox

安卓开发(3)-Broadcast-MusicBox

在这里插入图片描述

一.BroadcastReceiver定义

Broadcast(广播机制) 是一种广泛运用的应用程序之间 传输信息 的机制,而 BroadcastReceiver(广播接收器) 则是用于接收来自系统和应用的广播对并对其进行响应的组件,Android中我们要发送的广播内容是一个Intent,这个Intent中可以携带我们要传送的数据。

二.BroadcastReceiver的功能和方法

1.创建一个广播接收器非常简单,只需要继承 BroadcastReceiver,并重写onReceive()即可,如下
在这里插入图片描述
2.BroadcastReceiver也是四大组件之一,所以我们也需要对BroadcastReceiver进行注册,不同于其他四大组件,BroadcastReceiver有两种注册方式,分别是静态注册和动态注册。

静态注册:
(1)在AndroidManifest中的application标签下添加receiver子标签
(2)通过name属性指定注册一个广播类,还有enabled与exported属性,enabled代表是否启用这个广播接收器,exported表示是否允许这个广播接收器接受本程序以外的广播
(3)在receiver标签下添加intent-filter标签,设置对应action。action可以是系统定义的系统广播,也可以由开发者自己定义。
在这里插入图片描述
当我们的应用首次启动的时候,系统会自动实例化我们静态注册的BroadcastReceiver,然后将这个BroadcastReceiver注册到系统中,系统接收到广播之后,就会做出相应的判断,调用onReceive()方法。通过这种方式注册的广播,即使我们的应用被销毁,依然能收到广播。这里要注意的是,应用一定要被启动过,如果没有被启动可能就无法接收到广播。
由于静态注册耗电、占内存、不受程序生命周期影响这一特性,Google在Android 8.0上禁止大部分广播的静态注册,可以参考官文文档Android开发者

动态注册:
(1)在相关的activity中new MyBroadcastReceiver()
new intentFilter,调用其setAction方法,参数中传入相关值的action
(2)调用context.registerReceiver方法进行注册,方法的第一个参数为broadcastReceiver对象,第二个则是intentFilter对象。
通过动态注册的广播,BroadcastReceiver的生命周期跟随Activity的生命周期。

注意:要在Activity的onPause()中unRegeisterReceiver(),否则会引起内存泄漏。比较推荐onResume()中去注册广播,在onPause()中去注销广播。因为在内存资源比较吃紧的情况下,可能我们的Activity执行完onPause()之后就被销毁,这时候Activity的onStop()和onDestory()方法就不会执行了。

3.BroadcastReceiver发送

(1)普通广播(Normal Broadcast)
普通广播是完全异步的,通过context.sendBroadcast()方法发送,消息传递效率比较高,但所有接收器的执行顺序不确定。缺点是接收者不能将处理结果传递给下一个接收者,并且无法终止广播的传播。

(2) 有序广播(Ordered Broadcast)
有序广播是通过context.sendOrderedBroadcast()方法发送,所有的广播者按照优先级依次执行,广播接收器的优先级通过receiver的intent-filter中的android:priority属性来设置,数值越大优先级越高。当广播接收器接收到广播后,可以使用setResult()方法把结果传递给下一个接收者,通过getResult()方法获取上一个接收者传递过来的结果,并可以通过abortBroadcast()方法丢弃该广播,使该广播不再传递给下一个接收者。

(3) 粘性广播(Sticky Broadcast)
粘性广播通过context.sendStickBroadcast()方法来发送,用此方法发送的广播会一直滞留,当有匹配此广播的接收器被注册后,该广播接收器就会收到此广播。使用此广播时,需要获得BROADCAST_STICKY权限
由于在Android5.0 & API 21中已经失效,所以不建议使用。

(4) 本地广播(Local Broadcast)
前三种广播都是全局广播,所有应用都可以接收到,这样就带来安全隐患,而本地广播只在进程内传播,可以起到保护数据安全的作用。

三.实验截图

在这里插入图片描述
2.
在这里插入图片描述
3.
在这里插入图片描述
4.
在这里插入图片描述
5.GIF
在这里插入图片描述

四.注意

1.在建立此项目的时候就应该注意,有一个清晰的项目题目
2.在配置activity_main.xml文件时注意格式,不论时button还是textview
3.网上有很多清楚的方法,很有参考价值
4.AndroidManifest.xml文件的配置,尤其对你的MusicSeveice的配置,映射对应好才能成功播放音乐。

五.项目代码(gitee)

gitee代码仓库


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部