广播

作者: 飞鱼和大海 | 来源:发表于2016-07-28 13:24 被阅读0次

    BroadCastReceived

    • 普通广播
      同级别接收是无序的,设置级别priority,级别低的后收到
      同级别动态注册高于静态注册
      接收器不能截断和处理广播

    1.动态注册:在主方法中进行注册

    //BCOne为要发送的活动
    IntentFilter intentFilter=new IntentFilter("BCOne");
    //BC1为继承BroadcastReceiver类
    BC1 bc1=new BC1();
    registReceiver(bc1,intentFilter);
    

    2.静态注册:在AndroidManifest的application中注册

    <receiver android:name=".BC">
      <intent-filter android:priority="100">
          <action android:name="BCOne"></action>
      </intent-filter>
    </receiver>
    

    3.发送广播和接收广播:
    ①把信息装入Intent对象,调用相应的方法sendBroadcast()发送出去
    ②继承BroadcastReceive类,调用intent的getStringExtra()方法

    ①发送广播
    Intent intent=new Intent();
    intent.putExtra("msg","这是一条普通广播");
    intent.setAction("BCOne");
    sendBroadcast(intent);
    
    ②接收广播
    新建类BC1继承自BroadcastReceiver,实现onReceive方法
    String s=intent.getStringExtra("msg");
    Log.d("广播","广播:"+s);
    
    • 有序广播
      同级别接收是无序的,
      能截断继续传播的广播,高级别的广播接收到该广播后,可以决定把该广播是否截断
      能处理广播
      同级别动态注册高于静态注册
      1.处理数据(用Bundle)
      eg:在两个继承自BroadcastReceived类BC1传递和BC接收数据
    在BC1类中onReceived()方法中写入
    Bundle bundle=new Bundle();
    bundle.putString("test","BC1传递的数据");
    setResultExtras(bundle);
    
    在BC类onReceived()方法中写入
    Bundle bundle=getResultExtras(true);
    String s1=bundle.getString("test");
    Log("广播","BC2接收的数据为:"+s1);
    

    null标明其权限
    发送有序广播为sendOrderBroadcast(intent2,null);

    • 异步广播
      特点:先发送后注册
      步骤:
      1.在主方法中写入Intent并发送,并注册
      2.新建一个继承自BroadcastReceived类BC3,接收其数据
      3.在AndroidManifest注上权限
    Intent intent3=new Intent();
    intent3.putExtra("msg","这是一条异步广播");
    intent3.setAction("BCOne3");
    sendStickyBroadcast(intent3);
    IntentFilter intentFilter3=new IntentFilter("BCOne3");
    BC3 bc3=new BC3();
    registReceiver(bc3,intentFilter3);
    
    新建一个类继承自BroadcastReceived,在其onReceived()
    String s=getStringExtra("msg");
    Log.i("广播","异步广播"+s);
    
    在AndroidManifest注上权限
    在manifest标签中标明权限:
    <uses-permission android:name="android.permission.BROADCAST_STICKY"/>
    

    相关文章

      网友评论

          本文标题:广播

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