android中对broadcast广播的利用

开发中大家常常忽略对广播的应用开发,如果在app中合适的地方使用会让我们的app更加高效方便,下面介绍自己调试的案例

1、种类:按照使用方式和应用特性可以把其分成两种(1)动态注册方式(2)xml静态注册方式,这两者的区别是前者消息的传播范围仅仅局限于线程内即本app内部,后者则能和外部交流。

2、使用方法:

动态方法:可以设计三个按钮,注册按钮、发送按钮、取消广播按钮

         注册按钮:@Override
public void onClick(View arg0) {
re=new ReceiceBroadCast();//下面有定义方法继承了broadcastreceive这个系统方法
IntentFilter filert=new IntentFilter();
filert.addAction("dhj");//自定义action名字但是要和发送时用到的action名字保持一致才行
registerReceiver(re, filert);
}

             这个是上面用到的接收类

            public class ReceiveBroadCast extends BroadcastReceiver{
@Override
public void onReceive(Context arg0, Intent arg1) {
// 一旦执行接收就执行这个方法
String st=arg1.getStringExtra("data");
Toast.makeText(MainActivity.this, st, Toast.LENGTH_LONG).show();
          }

          }

                 发送按钮内的事件:

                                Intent fi=new Intent();
fi.setAction("dhj");
fi.putExtra("msg", "dhjddddd");
sendBroadcast(fi);

              取消按钮的事件:

                               unregisterReceiver(re);

             完成上面就能实现发送广播了

静态注册方法:实现启动另一个app利用广播

                 定义一个接收广播类,跟上一个区别是这个必须单独出来不能像上面的是在类内定义的

            public class ReceiceBroadCastByXml extends BroadcastReceiver {


@Override
public void onReceive(Context arg0, Intent arg1) {
String st=arg1.getStringExtra("msg");
Toast.makeText(arg0, st, Toast.LENGTH_LONG).show();
Intent intent=new Intent();
intent.setClass(arg0, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//没有这个设置启动本app会报错闪退
arg0.startActivity(intent);
}


}

那么本app的配置文件怎么写呢:

 <receiver android:name="com.example.broadcast1.ReceiceBroadCastByXml">
           <intent-filter>
               <action android:name="com.example.broadcast1.dhj"/>
           </intent-filter>
       </receiver>

需要解释一下,receive的android:name是上面接收方法的路径,action android:name是自定义的,只要发送广播时也用同样内容即可

另一个app要启动本app,就要发送广播了

Intent fi=new Intent();
fi.setAction("com.example.broadcast1.dhj");
fi.putExtra("msg", "dhjddddd");
sendBroadcast(fi);

就这么多,也花了一段时间才弄清这些

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值