广播服务

实现效果

首先来看项目效果
在这里插入图片描述

核心代码

广播接收者

因为是一个系统广播,所以只用写receiver,不用写sendBroadcast。接收者收到短信后,启动音乐播放服务,再启动MainAcativity。代码如下
在这里插入图片描述

主界面程序

当短信到来时,启动音乐播放服务,并且设置一个停止按钮。用一个Boolean型变量来判断是否为广播被激活。以下为部分代码
在这里插入图片描述

播放音乐

在res文件夹下新建一个raw文件夹,音乐文件放到raw里。具体播放音乐代码
在这里插入图片描述

清单文件的注册

在清单文件里配置短信权限、广播接收者组件的意图过滤器。
在这里插入图片描述

相关学习:显隐式调用intent

 intent分为显式与隐式两种调用方式。因为这个短信到来是系统调用,所以可以显式调用Intent。但如果是自己练手demo,由于是一个无名intent,要将它传出去,这时就得隐式调用。

隐式调用:隐式Intent它不明确指出我们想要启动哪一个活动,既不需要获取当前的context。而是指定了一系列更为抽象的action和category等信息来过滤,找到符合条件的Activity。常用的方法有setAction(),setData()等。
效率对比:
显式意图优点是效率高,系统直接精确定位要启用的组件,但耦合度也高,如果通过这种方式调用一些系统组件的话,容易因为版本更新,类名、包名、包结构变化等原因导致程序崩溃。
隐式意图能够降低程序的耦合度,但由于每次意图执行的时候,系统都会搜索所有可用的intentfilter,来查看是否有匹配的内容,所以效率更低。所以具体的使用还要看具体的情况。

总结

这次学习,让我对Broadcast有了一个基础的认识,对intent也有了更加深入的了解。(虽然intent学习跟本次作业没有多大关系)
第三次作业链接:https://gitee.com/ftlalala/Broadcast

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值