Android 广播的发送与接收

广播发送

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

①:IntentmyIntent=newIntent();——【创建Intent对象】

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

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

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


接收广播

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

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

②:在MyReceiver中重写publicvoidonReceive(Contextcontext,Intentintent)方法。这个方法在接收到广播后触发。——【重写处理方法】

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

④:IntentFilterfilter=newIntentFilter();——【创建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也就不存在了。



更多相关文章

  1. 关于android设备唯一区分device id的取得
  2. Android入门之addWindow
  3. 关于使用AccountManager的remove删除Android帐号的细节
  4. Android(安卓)WebView属性及用法
  5. 关于android全屏截图,无需root,无状态栏,2个方法
  6. 通过EventBus更换android app主题
  7. Android(安卓)闹钟 开发过程记录(二)
  8. 编译源码生成的SDK,创建android project 没有proguard.cfg问题
  9. android之monkeyrunner学习二

随机推荐

  1. Android中Service组件详解
  2. android application
  3. 《Android应用开发精解》前言
  4. Android开发规范
  5. Android异步处理二:使用AsyncTask异步更新
  6. 【Android】Android插件开发 —— 打开插
  7. Android中系统状态栏的隐藏和显示
  8. 构建Android应用程序
  9. android初探
  10. Android(安卓)多语言动态切换