【记录】Android 广播的发送与接收

Android 广播的发送与接收

    广播发送

    Android 在发送广播时的方法 sendBroadcast(Intent)。

    ①:Intent myIntent = new Intent();——【创建Intent对象】

    ②:myIntent.setAction(String)——【设置一般的要执行的动作。参数:动作一个动作的名称,如ACTION_VIEW。应用程序的具体行动,应与供应商的包名作为前缀。】

    ③:myIntent.putExtra(String,Object)——【广播中额外发送的数据,String为自定义key,Object表示多种数据类型】

    ④:sendBroadcast(myIntent);——【发送广播】


    接收广播

    Android在接收广播的方法是注册一个广播接收器 registerReceiver(MyReceiver,IntentFilter)。

    ①:首先创建MyReceiver类(类名自定义) 继承 BroadcastReceiver类。——【创建广播接收器】

    ②:在MyReceiver中重写public void onReceive(Context context, Intent intent)方法。这个方法在接收到广播后触发。——【重写处理方法】

    ③:在Activity或者Service启动时 onCreate()、onStartCommand()等方法中实例化 MyReceiver类——【启动时实例化广播接收器】

    ④:IntentFilter filter = new IntentFilter();——【创建IntentFilter对象   意图过滤器】

    ⑤:filter.addAction(String);——【在过滤器中加入过滤条件,说明接收什么广播】

    ⑥:registerReceiver(cmdReceiver, filter);——【注册广播,参数为(广播接收器,意图过滤器)】


对比Android系统广播的相关知识,列出下面一张思维导图(导图来至网络http://www.cnblogs.com/mandroid/archive/2011/02/27/1966569.html):



过程分析参考:

http://blog.csdn.net/luoshengyang/article/details/6737352

http://blog.csdn.net/luoshengyang/article/details/6744448

广播基本介绍:

(1)广播消息发送是用BroadcastReceiver类,在android.content包下。在需要发消息的地方创建一个Intent对象,将信息的内容和用于过滤的信息封装起来,通过以下三种方法将该Intent对象广播出去:Context.sendBroadcast方法; Context.sendOrderedBroadcast方法; Context.sendStickyBroadcast方法;

三种方法的区别如下:senBroadcast或sendStickyBroadcast发送出去的Intent,所有满足条件的BroadcastReceiver都会执行其onReceive方法。但若有多个满足条件的BroadcastReceiver,其执行onReceive方法的顺序是没有保证的。

而通过sendOrderedBroadcast方法发送出去的Intent,会根据BroadcastReceiver注册时IntentFilter设置的优先级的顺序来执行onReceive方法,相同的优先级的BroadcastReceiver执行onReceive方法的顺序是没有保证的。

sendStickyBroadcast主要的不同是,Intent在发送后会一直存在,并且在以后调用registerReceiver注册相匹配的Receiver时会把这个Intent对象直接返回给新注册的Receiver。

(2)广播消息接收通过IntentFilter对象来进行过滤。只需对BroadcastReceiver的onReceive回调方法进行合理重写,在适当的地方注册该BroadcastReceiver即可。

注册的方式,有两种:

一是在AndroidManifest.xml中声明。在<receiver></receiver>标签中,并在<intent-filter>标签内设定过滤规则;

二是在代码中创建并设置IntentFilter对象。该IntentFilter对象包含了对广播的过滤规则,然后在需要的的地方调用Context.registerReceiver方法和Context.unregisterReceiver方法进行注册和取消注册,该方法,当Context对象被销毁时,该BroadcastReceiver也就不存在了。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值