zoukankan      html  css  js  c++  java
  • Android LocalBroadcastManager 与 BroadcastReceiver

    Android中BroadcastReceiver主要用途有

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

    Android中发送广播的方式:

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

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

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

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

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

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

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

    1 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:

    1 // 声明 LocalBroadcastManager 
    2 LocalBroadcastManager mLocalBroadcastManager = LocalBroadcastManager.getInstance(this);
    3 //  sendBroadcast 
    4 mLocalBroadcastManager.sendBroadcast(new Intent(ACTION_FLAG));
  • 相关阅读:
    Javascript 创建对象的三种方法及比较【转载+整理】
    Firebug Console Panel 控制台详解【转载+整理】
    解剖 CPU(另)
    解剖 CPU
    关于 URL 编码及 JavaScript 编码函数【转载+整理】
    基于用户投票的 6 个排名算法【转载+整理】
    奥巴马筹款网站的制作过程【转载+整理】
    CentOS 7.0关闭默认firewall防火墙启用iptables防火墙
    mybatis-generator 代码自动生成工具
    Linux中启动和停止jar包的运行
  • 原文地址:https://www.cnblogs.com/CharlesGrant/p/4844600.html
Copyright © 2011-2022 走看看