zoukankan      html  css  js  c++  java
  • Android Broadcast广播

    广播从注册方式上分为两种,静态广播和动态广播;从发送方式上也分为两种,无序广播和有序广播。
    广播接收器的onReceive方法不应该执行较复杂的任务,否则会出错。一般是用于调用其他任务或显示一条通知。
    在Activity onDestroy时,要解除注册接收器。

    注册方式

    静态广播

    编写好广播接收器的实现类后,在AndroidManifest.xml中添加

    <receiver
        android:name=".MyReceiver"
        android:enabled="true" <!-- 启用 -->
        android:exported="true"> <!-- 可接收外部广播 -->
        <intent-filter>
            <action android:name="balalala"/> <!-- 过滤器 -->
        </intent-filter>
    </receiver>
    

    注意:在较新版本的Android中,静态注册的广播无法接收广播。在发送广播时,必须用intent的ComponentName属性指定广播接收器的类全路径。

    动态广播

    编写好广播接收器的实现类后,在需要开启接收广播的Activity中调用registerReceiver(BroadcastReceiver)注册广播。

    发送方式

    无序发送

    直接使用sendBroadcast(intent)发送广播。所有注册的接收器都将接收到这个广播。

    顺序发送

    会根据优先级从大到小依次链式接收广播,优先级大的接收器可以将广播中断(abortBroadcast()),广播就到此为止。

    定义优先级

    1. 静态注册时
    2. 动态注册时filter.setPriority(888);

    发送有序广播

        sendOrderedBroadcast(intent,true);
    

    添加信息给低优先级的接收器、接收高优先级传来的消息

        @Override
        public void onReceive(Context context, Intent intent) {
            Bundle b= getResultExtras(true);
            setResultExtras(new Bundle());
        }
    

    中止广播

        @Override
        public void onReceive(Context context, Intent intent) {
            abortBroadcast();
        }
    
  • 相关阅读:
    链表查找问题总结
    部分有序中查找给定值-【百度面试题】循环有序数组的查找问题
    为何要将整型变量强制转化为指针
    洗牌算法汇总
    如果有三个Bool型变量,请写出一程序得知其中有2个以上变量的值是true
    利用宏来求结构体成员偏移值
    水塘抽样问题
    Javascript 装载和执行
    git ssh认证
    git 配置文件
  • 原文地址:https://www.cnblogs.com/pravez/p/12621452.html
Copyright © 2011-2022 走看看