Android基础知识之broadcast广播详解

Android基础知识之broadcast广播详解,第1张

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

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

1.静态注册广播:
静态注册广播就是在androIDManifest.xml文件中注册广播,假设我们要实现这样一个效果,在一个activity上点击按钮,发送一条广播,这条广播d出一个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基础知识之broadcast广播详解全部内容,希望文章能够帮你解决Android基础知识之broadcast广播详解所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1149167.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-31
下一篇2022-05-31

发表评论

登录后才能评论

评论列表(0条)

    保存