在发送广播之前,我们还需要先定义一个广播接收器来准备接收这个广播,因此新建一个MyBroadcastReceiver,如下:
              
public class MyBroadcastReceiver extends BroadcastReceiver {    @Override    public void onReceive(Context context, Intent intent) {        Log.w("MyBroadcastReceiver","reecived MyBroadcastReceiver");    }}
当接收到自定义广播的时候,就会打印这条log,然后就要在清单文件中对这个广播接收器进行修改:
                                                                                                                            

上面的 广播接收器是 静态注册的,与自定义广播接受者非常类似,不要忘了注意权限的问题 可以看到,这里让 MyBroadcastReceiver接收一条名为 "com.doyoulove.MY_RECEIVER" 的广播,所以发送广播时,我们就需要发送这样的一条广播。  可以将发送广播添加到某一个按钮之类的点击事件中,
    
Intent intent=new Intent("com.doyoulove.MY_RECEIVER");                sendBroadcast(intent);
这样所有监听这条广播的广播接收者都会收到消息,此时发出去的广播就是一条标准广播。同时可以在intent中携带一些数据传递给广播接收者。
广播是一种可以跨进程的通信方式,这一点从接收系统广播就能看出来,因此我们应用发出的广播,其他应用也是可以收到的。
然后就要说一下有序广播:
    
只需要将 sendBroadcast 方法改成sendOrderedBroadcast方法,该方法接受两个参数,第一个参数,仍然是intent,第二个参数是一个与权限相关的字符串(传入null亦可)。此时的广播接收器是有先后顺序的,而且前面的广播接收器还可以将广播截断,以阻止其继续传播。
要在清单文件中注册的时候设定广播接收器的先后顺序,如下
    
                                                     
通过android:priority来设置优先级,优先级越高越早接收到广播。如果在广播接收器的onReceive方法中调用了abortBroadcast方法,就表示将这条广播截断,后面的广播接收器将无法接受到这条广播。
   
温馨提示:不要在广播的onReceive()里面添加过多的逻辑或者耗时操作,因为在广播接收器中是不允许开启线程,当onReceive方法运行较长时间而没有结束,程序就会报错,因此广播接收器更多的是扮演一种打开程序其他组件的角色 比如启动一个服务,创建一条状态栏通知等。

更多相关文章

  1. GPS开发常用方法和Criteria确定android location providerGPS
  2. 通过ddmlib杀死某个android进程的方法
  3. Android之 inflate() 方法总结
  4. Android读取服务器图片的三种方法
  5. android播放本地工程里的音乐和视频的方法
  6. ActionBar的一些使用方法
  7. H5调用原生APP的js方法
  8. Android屏蔽EditText软键盘的方法
  9. Android获取屏幕尺寸的方法

随机推荐

  1. Android(安卓)Toast 部分手机无法显示问
  2. Android(安卓)RemoteViews原理
  3. Android代码混淆proguard技…
  4. Android(安卓)Sensor框架简述(三)
  5. 和菜鸟一起学android4.0.3源码之SD卡U盘
  6. kotlin零基础入门(一) - kotlin的简单介绍
  7. Android文件储存
  8. restartPackage && sharedUserId="androi
  9. android4.4修改Recovery动画(包含恢复出厂
  10. BroadcastReceiver之实现锁屏、解锁例子