Android中BroadcastReceiver主要用途有

发送通知,更新UI或者数据,应用程序间相互通信,监听系统状态(比如开机,网络等)

Android中发送广播的方式:

普通广播:无论优先级大小,将发送给所有监听Action="com.test.sample.action"的广播,内容不可被修改,无传递性。

 Intent intent = new Intent( "com.test.sample.action");
sendBroadcast(intent);

异步(黏性)广播: 当处理完之后的Intent ,依然存在,这时候registerReceiver(BroadcastReceiver, IntentFilter) 还能收到他的值,直到你把它去掉 , 无传递性 , 无法终止(abort())广播。

发这个广播需要权限<uses-permission android:name="android.permission.BROADCAST_STICKY" />

去掉是用这个方法removeStickyBroadcast(intent); 但别忘了在执行这个方法的应用里面 AndroidManifest.xml 同样要加上面的权限;

 sendStickyOrderedBroadcast(intent, resultReceiver, scheduler,
initialCode, initialData, initialExtras)

有序广播:按照接收者的优先级顺序接收广播 , 优先级别在 intent-filter 中的 priority 中声明 ,-1000 到1000 之间 ,值越大 优先级越高 。可以终止广播意图的继续传播 , 接收者可以篡改内容,具有传递性。

 sendBroadcast(intent);

注意:安全性都不太好,因此只适用于安全性较低的数据传递,或者页面更新。

所以android在android-support-v4.jar中引入了LocalBroadcastManager,称为局部通知管理器,这种通知的好处是安全性高,效率也高,适合局部通信,可以用来代替Handler更新UI

对于普通:registerReceiver(); registerReceiver();

// Activity:

// 声明 LocalBroadcastManager
LocalBroadcastManager mLocalBroadcastManager = LocalBroadcastManager.getInstance(this);
// 声明 BroadcastReceiver
BroadcastReceiver mReceiver new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
    // Todo
  }
};
// 注册
mLocalBroadcastManager.registerReceiver(mReceiver, filter);

// Service:

 // 声明 LocalBroadcastManager
LocalBroadcastManager mLocalBroadcastManager = LocalBroadcastManager.getInstance(this);
// sendBroadcast
mLocalBroadcastManager.sendBroadcast(new Intent(ACTION_FLAG));

最新文章

  1. andriod 手机按键检测事件 onKeyDown() 简述
  2. HTML、CSS和JS
  3. Android源码网站
  4. xml in hadoop ETL with pig summary
  5. 异常处理原则--good
  6. HDU 1688 Sightseeing
  7. 轮播图切换 纯html+js+css
  8. MongoDB服务器启动异常 1067
  9. [转]RecyclerView初探
  10. Microsoft Accelerator for Windows Azure Alum Azuqua 今天启动
  11. Apache 2.4虚拟主机配置
  12. 无法定位程序输入点__gxx_personality_v0的一个解决方法
  13. 关于Dubbo分布式服务
  14. webView 不能复制解决方案
  15. RT-thread 利用Scons 工具编译提示python编码错误解决办法
  16. JS图片更换还原操作,通过图片识别标识
  17. [phpvia/via] PHP多进程服务器模型中的惊群
  18. Java成神路上之设计模式系列教程之一
  19. Python制作二维码和条形码扫描器 (pyzbar)
  20. Win10连接远程桌面的时候提示您的凭证不工作该怎么办?

热门文章

  1. 微信支付 - V3支付问题
  2. oracle一点记录
  3. C#接扣和抽象类
  4. vim: vs sp 调整窗口高度和宽度
  5. IOS 100 - level2 Boss
  6. 关于cout&lt;&lt;ends你不知道的那些事
  7. [Linux] 获得系统位数
  8. Sublime Text 3 安装Go语言相关插件gosublime
  9. 读取csv文件
  10. HDU 5876 Sparse Graph BFS 最短路