广播(BroadCast)

广播消息是android中的用来进行通知的消息。便于进行系统级别的消息通知或者自定义的消息通知。发送广播后,注册该广播的广播接收器(broadcast receiver)就可以接收该广播,然后进行对应的业务操作。

  • 标准广播(无序广播)
    这是一种完全异步执行的广播,发出广播后,所有的广播接收器几乎都会在同一时刻接收到该条广播。这种广播效率较高,但无法被拦截。

  • 有序广播
    对应无序广播,有序广播则是一种依次被接收的广播。广播接收器可以设置优先级,优先级较高的就会先收到该广播,然后可以设定是否可以拦截。如果不拦截,该条广播就会继续往下一个优先级较高的广播接收器传递。如果拦截,该广播就不继续传递,后边的广播接收器就再也收不到该广播了。

广播可以分为系统级广播(如手机开机,电池电量发生变化等)和程序内自定义广播。
发送一条广播:

Intent intent = new Intent("com.example.mj.FORCE_OFFLINE");
sendBroadcast(intent);
sendOrderedBroadcast(intent,null);//发送有序广播

广播接收器的注册:

  • 动态注册
    • 指在代码中进行注册
    @Override
    protected void onResume() {
        super.onResume();

        IntentFilter intentFilter = new IntentFilter();
      //intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");//系统网络变化广播
        intentFilter.addAction("com.example.mj.FORCE_OFFLINE");//自定义广播
        OffLineReceiver offLineReceive = new OffLineReceiver();
        registerReceiver(offLineReceiver,intentFilter);
    }
   class OffLineReceiver extends BroadcastReceiver{

        @Override
        public void onReceive(final Context context, Intent intent) {
         //todo
        //abortBroadcast()//拦截有序广播
        }
    }
  • 静态注册
    • 指在AndroidManifest.xml文件中进行注册。
        <receiver 
            android:name=".OffLineReceiver"
            android:enabled="true"
            android:exported="true">
            <intent-filter>
           //intent- filter android:prioty> 有序广播的设置优先级
                <action android:name="com.example.mj.OffLineReceiver"/>
            </intent-filter>
        </receiver>

*在广播接收器的onReceive()方法中,不能做耗时操作。

  • 本地广播
    由于一般的广播既可以被别的应用程序接收到,自己的应用程序也可以接收到别的程序的广播,容易引起数据的不安全问题。所以引用了本地广播的机制。使用本地广播,就可以使广播只在本应用程序内传播和接收。
        LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(this);
        Intent intent = new Intent("com.example.mj.FORCE_OFFLINE");
        localBroadcastManager.sendBroadcast(intent);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值