android学习,BroadcastReceiver

第一次在CSDN 上写博客,有一点纪念意义,希望以后能够专心做成一些事情。


继续学习第一行代码的内容。P197

上次在QQ空间里写博客,里面是学习接收系统广播的一些事情。


学会了接收,肯定要学会发送广播。我们自己发送的广播自然是自定义的。

广播分两种,标准广播和有序广播。

(标准广播就和系统广播差不多,大家有能力都可以收,估计也可以给它加权限,但是例子中没有涉及)

(有序广播是优先级高的recevier先接收,再往下一个receiver传递,中间可以终止)


代码和书上的没什么差别,就不粘贴了。主要自己回忆一下过程


1标准广播

首先需要一个receiver来接收,使用静态注册的方法快捷一些。

定义一个类继承自broadcastreceiver,然后在里面重写onreceive函数,toast一个话语,代表receive收到了


然后在manifest里面注册一个receiver标签,写一个action的收广播“com.example.sss.broadcasttest.MY_BROADCAST”

至此,接收器的工作就完成了


发送广播在mainactivity里面进行,来一个按键

Button button=(Button)findviewbyid(R.id.button)

然后设置按键动作,setclicklistner(new onclicklistner)

按键只是一个形式而已了


在中间进行广播的发送,很简单,通过Intent

Intent intent=new Intent("com.example.sss.broadcasttest.MY_BROADCAST");

sendBroadcast(intent);//用的是context的sendBroadcast,这是书上说的,我感觉是不用专门点出来,看来context在这个地方是个全局默认的东西

此时,标准广播的发送就完成了


2 有序广播

有序广播也很简单

为了体现其特色,肯定需要两个receiver

再新建一个receiver,然后接收的action也在manifest里面注册好com.example.sss.broadcasttest.MY_BROADCAST


此时,两个都可以同时接收到这条action广播。这时,还不是有序广播,标准广播就是人人都可以接收


send方法要变一下,sendorderedbroadcast(intent,null);

关于这个null,刚刚查了一下别人的博客,是一个权限的设定。果然和我前面猜的一致。

搬运的内容:

广播接收器中权限的定义:

    在发送广播时,无论是无序广播(Normal Broadcast)还是有序广播(Ordered Broadcast)都有类似的方法:sendBroadcast (Intent intent, String receiverPermission), sendOrderedBroadcast (Intent intent, String receiverPermission)。其中第二个参数是设置权限,即接收器必须具有相应的权限才能正常接收到广播。


然后在manifest里面要注册时,在intent-filter里面加一个property=100这个数值就说明此接收器接收广播的级别,越大越先接收到


运行也无问题


3本地广播


本地广播与广播类似,不过是程序内部的广播,外部程序不能收到,所以不能使用静态注册的方法。

具体用法,需要LocalBroadcastManager

此时,顺便复习动态注册的方法

需要intentfilter,同样需要recevier,另外不一样的地方需要LocalBroadcastManager


要实例化,使用localBroadcastManager=LocalBroadcastManager.getInstance(this)//获得当前对象,说实话这个不是很明白

其他的就差不多了,需要注册,localBroadcastManager.register(intentfilter,recevier)

还需要在ondestroy里面解除注册


在按键动作里面设置发送广播,

Intent intent=new Intent("com.example.sss.broadcasttest.MY_BROADCAST")

localBroadcastManager.sendBroadcast(intent)


今天一开始的时候,老是运行不起程序,

截图是这个样子的



说是内存不够,删了软件还是没用。换另一个手机没问题,说明代码本身没问题

然后重启手机,重启软件,重启电脑。都没用。。。

最后用手机自带的软件,清理了一下垃圾,就好了。估计是某个文件夹之类的满了吧。但是也不是很明白。


昨天的那个问题,静态注册的广播接收器还是得启动程序才能接收广播,并不是如书上所说的那样,不启动程序就可以接收广播。这事打算发个邮件去请教一下那个作者。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值