首页 > 移动平台 > 详细

Android Broadcast广播

时间:2020-04-02 19:29:48      阅读:78      评论:0      收藏:0      [点我收藏+]

广播从注册方式上分为两种,静态广播和动态广播;从发送方式上也分为两种,无序广播和有序广播。
广播接收器的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();
    }

Android Broadcast广播

原文:https://www.cnblogs.com/pravez/p/12621452.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!