broadcastreceiver使用注意(一)

在开发音乐播放器的过程中,由于使用了broadcatreveiver,遇到了一些问题


首先说说大致架构,我在activity中有一个musicplayfragment,musicplayfragment中new了一个broadcastreceiver:a

在activity中new了一个service(start启动),service中又new了一个broadcastreceiver:b


当程序打开的时候,判断service是否存在,判断结果:不存在。操作:创建service,然后判断service是否存在,判断结果:“存在。操作:发送广播给service中的receiver:b,

看似很正常的一个顺序,结果却是receiver b根本就没有接受到广播,看了看log,发现,虽然判断service已经存在了,但是service的生命周期方法(oncreate等)都还没有被调用。那么在生命周期中创建的receiver b自然就不存在,也就接受不到广播了。推测:在所有界面都调用完毕了,才会分出cpu去创建service,但是这个时候已经在系统上注册了service


嗯,既然这样,那么我改了一下,在两个receiver中的构造方法中互相发送广播,结果,receiver a发送给b的广播没有反应,receiver b发送给a的广播却有反应,

那么,推测:receiver a比b先创建,与第一个推测类似,等所有界面都调用完毕了,才会调用service的构造方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值