Android基础知识之broadcast广播详解

2019-12-10 17:50:06于海丽

关于静态注册的细节:
android:exported=”true”这个属性表示该广播接收器是否接收来自其他App发出的广播,如果有intent-filter属性,则默认为true,否则默认为false。

每个广播接收者都可以接受多个广播源,如果是静态注册,那么你要这么做:

  <receiver 
      android:exported="true"
      android:name="com.example.staticbroadcast.MyBroadcast" >
      <intent-filter>
        <action android:name="com.test.StaticBroadcast" />
        <action android:name="com.test.StaticBroadcast2"/>
      </intent-filter>
    </receiver>

在广播接收器中这样处理:

  @Override
  public void onReceive(Context context, Intent intent) {
    if (intent.getAction().equals("com.test.StaticBroadcast")) {
      Toast.makeText(context, "静态", Toast.LENGTH_SHORT).show();
    } else if (intent.getAction().equals("com.test.StaticBroadcast2")) {
      Toast.makeText(context, "静态2", Toast.LENGTH_SHORT).show();
    }
  }

如果是动态注册,注册方式如下:

  @Override
  protected void onStart() {
    super.onStart();
    //注册广播
    IntentFilter intentFilter = new IntentFilter();
    intentFilter.addAction("DynamicBroadcast");
    intentFilter.addAction("DynamicBroadcast2");
    registerReceiver(myBroadcastReceiver, intentFilter);

  }

广播接收器中的处理方式与静态注册一致。

关于怎样使用broadcast实现activity和fragment之间的通信可以查看我的另一篇博客使用Broadcast实现android组件之间的通信

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持ASPKU。

 

注:相关教程知识阅读请移步到Android开发频道。