美文网首页
广播与广播接收器

广播与广播接收器

作者: 四喜汤圆 | 来源:发表于2018-09-21 15:06 被阅读15次

一、原理

参见校招指南
  1. 广播接收者通过Binder驱动在AMS中注册
  2. 广播发送者通过Binder驱动发送广播到AMS
  3. AMS根据广播发送者的要求,在注册列表中找到满足条件的广播接收器(IntentFilter、Permisson),将广播发送到广播接收器的消息循环队列中
  4. 广播接收器通过消息循环拿到此广播,并回调onReceive()方法

二、使用

1. 注册广播

静态注册

静态注册的广播接收器在应用安装时将该广播接收器注册到AMS中

<receiver
    android:enabled=["true"|"false"]// 此广播接收器是否能接收其他APP发出的广播
    android:exported=["true"|"false"]// 是否支持其他应用调用当前组件(此默认值是由receiver中有误intent-filter决定的:Y-true;N-false)
    android:icon="drawable resource"
    android:label="string resource"
    android:name=".mbroadcasrReceiver"
    android:permisson=""// 具有相应权限的广播发送者发送的广播才能被此receiver接收
    android:process="" // 指定自己想去的进程>
    <intent-filter>
        <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
    </intent-filter>

</receiver>

动态注册

一般在onResume()中注册,对应的在onPause()中取消注册

注册普通广播

protected void onResume(){
    super.onResume();
    MyReceiver mReceiver=new MyReceiver();
    IntentFilter filter=new IntentFilter();
    filter.addAction(android.net.conn.CONNECTIVITY_CHANGE);
    regiterReceiver(mReceiver,intentFilter);
}

protected void onPause(){
    super.onPause();
    unregisterReceiver(nReceiver);
}

注册应用内广播

//步骤1:实例化BroadcastReceiver子类 & IntentFilter 
MyReceiver mReceiver = new MyReceiver (); 
IntentFilter intentFilter = new IntentFilter(); 
//步骤2:设置接收广播的类型 
intentFilter.addAction(android.net.conn.CONNECTIVITY_CHANGE);

//步骤3:实例化LocalBroadcastManager的实例
LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(this);

//步骤4:调用LocalBroadcastManager单一实例的registerReceiver()方法进行动态注册 
localBroadcastManager.registerReceiver(mBroadcastReceiver, intentFilter);

//取消注册应用内广播接收器
localBroadcastManager.unregisterReceiver(mBroadcastReceiver);

二者对比

2. 发送广播

发送普通广播

Intent intent=new Intent();
intent.setAction(BROADCAST_ACTION);
// 发送广播
sendBroadcast(intent);

发送应用内广播

Intent intent = new Intent();
intent.setAction(BROADCAST_ACTION);
localBroadcastManager.sendBroadcast(intent);

参考文献

校招指南

相关文章

  • 广播与广播接收器

    一、原理 广播接收者通过Binder驱动在AMS中注册 广播发送者通过Binder驱动发送广播到AMS AMS根据...

  • 关于Broadcast

    前言 广播分类 标准广播:异步收发,所有的广播接收器几乎可以同时收到广播。有序广播:同步收发,当上一个广播接收器处...

  • Android Receiver广播特性,Receiver总结

    广播分为两大类 标准广播,所有广播接收器同时收到有序广播,所有广播接收器按顺序收到,可在中途拦截 广播有两种注册方...

  • Android 广播

    【Android 广播】 BroadcastReceiver简介 BroadcastReceiver(广播接收器)...

  • Android广播接收器(三)

    本地广播 前面两篇文章Android广播接收器(一)和Android广播接收器(二)讲的都属于全局广播,即发出的广...

  • 入门第五天

    广播接收器 分为动态广播器和静态广播器,静态广播器只能接受显式广播 广播 分为标准广播和有序广播,标准广播使得所有...

  • 广播及广播接收器

    静态注册广播接收器 动态注册广播接收器 onResume()中注册【注册完成后会首先收到一条广播】 onPause...

  • 第五章 全局大喇叭,详解广播机制

    5.1广播机制简介 广播分为标准广播和有序广播 标准广播:异步执行广播,广播发出后,所有的广播接收器都会几乎在同时...

  • Android WIFI网络连接

    1.权限 2.获取WifiManager 3.注册扫描结果广播接收器 广播接收器 4.扫描 5.限制概述(权限与节...

  • Android - base - Broadcast

    四大组件之广播 大纲 广播机制简介 广播接收器 广播发信器 接收系统广播 发送自定义广播 本地广播 #广播机制简介...

网友评论

      本文标题:广播与广播接收器

      本文链接:https://www.haomeiwen.com/subject/abdpnftx.html