android广播发送与接收演示DEMO

<style type="text/css"> p.p1 {margin: 0.0px 0.0px 14.0px 0.0px; line-height: 26.0px; font: 16.0px Arial; color: #333233} p.p2 {margin: 0.0px 0.0px 14.0px 0.0px; line-height: 26.0px; font: 14.0px Arial; color: #333233} p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 26.0px; font: 12.0px Consolas; color: #333233; background-color: #e7e5dc; min-height: 14.0px} p.p11 {margin: 0.0px 0.0px 14.0px 0.0px; line-height: 26.0px; font: 14.0px Arial; color: #333233; min-height: 16.0px} li.li4 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 18.0px; font: 12.0px Consolas} li.li5 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 18.0px; font: 12.0px Consolas; background-color: #f8f8f8} li.li6 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 18.0px; font: 12.0px Consolas; color: #018225; background-color: #f8f8f8} li.li7 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 18.0px; font: 12.0px Consolas; color: #646464} li.li8 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 18.0px; font: 12.0px Consolas; color: #018225} li.li9 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 18.0px; font: 12.0px Consolas; color: #053df5} li.li10 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 18.0px; font: 12.0px Consolas; color: #646464; background-color: #f8f8f8} li.li12 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 18.0px; font: 12.0px Consolas; color: #ff1d17} li.li13 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 18.0px; font: 12.0px Consolas; color: #053df5; background-color: #f8f8f8} li.li14 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 18.0px; font: 12.0px Consolas; color: #993310; background-color: #f8f8f8} li.li15 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 18.0px; font: 12.0px Consolas; color: #993310} span.s1 {color: #006699} span.s2 {color: #053df5} span.s3 {color: #000000} span.s4 {color: #646464} span.s5 {color: #993310} span.s6 {color: #ff1d17} ul.ul1 {list-style-type: none} </style>

Android 中有各式各样的广播,各种广播在Android 系统中运行,当系统/应用程序运行时便会向 Android 注册各种广播,Android 接收到广播会便会判断哪种广播需要哪种事件,然后向不同需要事件的应用程序注册事件,不同的广播可能处理不同的事件也可能处理相同的广播事件,这时就需要Android 系统为我们做筛选。

  案例分析:

  一个经典的电话黑名单,首先通过将黑名单号码保存在数据库里面,当来电时,我们接收到来电广播并将黑名单号码与数据库中的某个数据做匹配,如果匹配的话则做出相应的处理,比如挂掉电话、比如静音等等。

下面通过一个小DEMO 来讲解一下广播在Android 中如何编写,在Demo中我们设置了一个按钮为按钮设置点击监听通过点击发送广播,在后台中接收到广播并打印LOG信息。代码如下:

1.广播的发送


  • publicclassBroadCastActivityextendsActivity{
  • publicstaticfinalStringACTION_INTENT_TEST="com.broadcast.test";
  • /**Calledwhentheactivityisfirstcreated.*/
  • @Override
  • publicvoidonCreate(BundlesavedInstanceState){
  • super.onCreate(savedInstanceState);
  • setContentView(R.layout.main);
  • Buttonbtn=(Button)findViewById(R.id.Button01);
  • btn.setOnClickListener(newOnClickListener(){
  • @Override
  • publicvoidonClick(Viewv){
  • //TODOAuto-generatedmethodstub
  • Intentintent=newIntent(ACTION_INTENT_TEST);
  • sendBroadcast(intent);
  • }
  • });
  • }
  • }
  •  

2.广播的接收与处理.


  • //接收器代码如下:
  • publicclassmyBroadCastextendsBroadcastReceiver{
  • publicmyBroadCast(){
  • Log.v("BROADCAST_TAG","myBroadCast");
  • }
  • @Override
  • publicvoidonReceive(Contextcontext,Intentintent){
  • //TODOAuto-generatedmethodstub
  • Log.v("BROADCAST_TAG","onReceive");
  • }
  • }

3.Android 如何判断并筛选广播?


  前面说过 Android 的广播有各式各样,那么Android 系统是如何帮我们处理我们需要哪种广播并为我们提供相应的广播服务呢?这里有一点需要大家注意,每实现一个广播接收类必须在我们应用程序中的 manifest 中显式的注明哪一个类需要广播,并为其设置过滤器


  • <?xmlversion="1.0"encoding="utf-8"?>
  • <manifestxmlns:android="http://schemas.android.com/apk/res/android"
  • package="com.apkabc.broadcast"android:versionCode="1"android:versionName="1.0">
  • <applicationandroid:icon="@drawable/icon"android:label="@string/app_name">
  • <receiverandroid:name=".myBroadCast">
  • <intent-filter>
  • <actionandroid:name="com.broadcast.test"/>
  • </intent-filter>
  • </receiver>
  • </application>
  • </manifest>

小结:

  在Android 中如果要发送一个广播必须使用sendBroadCast 向系统发送对其感兴趣的广播接收器中。

  使用广播必须要有一个intent 对象必设置其action动作对象

  使用广播必须在配置文件中显式的指明该广播对象

  每次接收广播都会重新生成一个接收广播的对象

  在BroadCast 中尽量不要处理太多逻辑问题,建议复杂的逻辑交给Activity 或者 Service 去处理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值