Android基础知识之broadcast广播详解

 更新时间:2016年06月08日 14:23:35   作者:_江南一点雨  
这篇文章主要为大家详细介绍了Android基础知识之broadcast广播的相关资料,感兴趣的小伙伴们可以参考一下

Android中的广播用的太多了,今天稍微总结一下。
按注册方式分为两种:

1.静态注册广播:
静态注册广播就是在androidManifest.xml文件中注册广播,假设我们要实现这样一个效果,在一个activity上点击按钮,发送一条广播,这条广播弹出一个toast,显示“静态”二字。

先看看广播接受者:

public class MyBroadcast extends BroadcastReceiver {

  @Override
  public void onReceive(Context context, Intent intent) {
    Toast.makeText(context,"静态", Toast.LENGTH_LONG).show();
  }

}

清单文件中注册:

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

activity中的点击事件(发送广播):

 this.static_btn.setOnClickListener(new OnClickListener() {

      @Override
      public void onClick(View v) {
        Intent intent = new Intent();
        intent.setAction("com.test.StaticBroadcast");
        sendBroadcast(intent);
      }
    });

2.动态注册:
动态注册一般是在activity中的onStart()方法中注册,在onStop()方法中解除注册,代码如下:

public class MainActivity extends Activity {

  private Button static_btn;
  private Button dynamic_btn;
  private BroadcastReceiver myBroadcastReceiver;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    this.static_btn = (Button) this.findViewById(R.id.button1);
    this.dynamic_btn = (Button) this.findViewById(R.id.Button01);
    myBroadcastReceiver = new BroadcastReceiver(){

      @Override
      public void onReceive(Context context, Intent intent) {
        Toast.makeText(MainActivity.this,"你好,这里是动态广播!", Toast.LENGTH_LONG).show();
      }

    };

//   this.static_btn.setOnClickListener(new OnClickListener() {
//
//     @Override
//     public void onClick(View v) {
//       Intent intent = new Intent();
//       intent.setAction("com.test.StaticBroadcast");
//       sendBroadcast(intent);
//     }
//   });

    this.dynamic_btn.setOnClickListener(new OnClickListener() {

      @Override
      public void onClick(View v) {
        //发送广播
        Intent intent = new Intent();
        intent.setAction("DynamicBroadcast");
        sendBroadcast(intent);
      }
    });
  }

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

  }

  @Override
  protected void onStop() {
    super.onStop();
    //取消注册
    unregisterReceiver(myBroadcastReceiver);
  }
}

关于静态注册的细节:
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组件之间的通信

原文地址:http://blog.csdn.net/u012702547/article/details/46955787

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

相关文章

  • Android中的深度链接技术实战

    Android中的深度链接技术实战

    本文主要介绍了Android中的深度链接技术实战,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • Android WebView上实现JavaScript与Java交互

    Android WebView上实现JavaScript与Java交互

    这篇文章主要介绍了Android WebView上实现JavaScript与Java交互 的相关资料,需要的朋友可以参考下
    2016-03-03
  • Android发送短信方法总结

    Android发送短信方法总结

    这篇文章主要介绍了Android发送短信方法,结合实例形式较为详细的分析了Android发送短信的原理与具体实现技巧,需要的朋友可以参考下
    2016-11-11
  • Android列表RecyclerView排列布局

    Android列表RecyclerView排列布局

    这篇文章主要为大家详细介绍了Android列表RecyclerView排列布局,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-07-07
  • 详解android 人脸检测你一定会遇到的坑

    详解android 人脸检测你一定会遇到的坑

    这篇文章主要介绍了详解android 人脸检测你一定会遇到的坑,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • Android 封装Okhttp+Retrofit+RxJava,外加拦截器实例

    Android 封装Okhttp+Retrofit+RxJava,外加拦截器实例

    下面小编就为大家分享一篇Android封装Okhttp+Retrofit+RxJava,外加拦截器实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01
  • 基于Android在布局中动态添加view的两种方法(总结)

    基于Android在布局中动态添加view的两种方法(总结)

    下面小编就为大家带来一篇基于Android在布局中动态添加view的两种方法(总结)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • Android Activity活动页面跳转与页面传值

    Android Activity活动页面跳转与页面传值

    大家好,本篇文章主要讲的是Android Activity活动页面跳转与页面传值,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • Android Flutter制作交错动画的示例代码

    Android Flutter制作交错动画的示例代码

    这篇文章我们将用Flutter实现一个交错动画的应用实例,我们让轮子在草地滚动着前进,而且还能粘上“绿色的草”,感兴趣的可以动手尝试一下
    2022-06-06
  • Android Service自启动注意事项分析

    Android Service自启动注意事项分析

    这篇文章主要介绍了Android Service自启动注意事项,结合实例分析了Android Service自启动过程中属性设置的相关技巧,需要的朋友可以参考下
    2016-03-03

最新评论