首页 > 系统 > Android > 正文

Android 实现广播(Broadcast)

2019-11-09 17:34:50
字体:
来源:转载
供稿:网友

Android广播其实和我们生活中的广播类似 笼统的来说就是传播数据。

1.实现了不同应用程序之间的数据传输和共享(比如通过获取短信,电话做到拦截功能)

2.起到了一个通知的作用,比如在service中要通知主程序,更新主程序的UI等。

实现广播其实很简单

1.既然是广播一定要有发送方和接受方

对于发送方来说,我们需要一个桥梁(Intent)

    Intent intent = new Intent();  //Itent就是我们要发送的内容            intent.putExtra("data""this is data from broadcast "+Calendar.getInstance().get(Calendar.SECOND));              intent.setAction(flag);   //设置你这个广播的action,只有和这个action一样的接受者才能接受者才能接收广播            sendBroadcast(intent);   //发送广播作为接收方,需要对广播进行注册(动态和静态)1.先定义一个接受类public class ReceiveBroadCast extends BroadcastReceiver{         @Override        public void onReceive(Context context, Intent intent)        {            //得到广播中得到的数据输出到控制台            String message = intent.getStringExtra("data");            Log.i("test",message);        } }1.1-动态广播(不需要在应用的配置文件中注册,直接使用java代码进行注册)在页面启动的时候注册(OnResume)    receiveBroadCast = new ReceiveBroadCast();            IntentFilter filter = new IntentFilter();            filter.addAction(flag);    //只有持有相同的action的接受者才能接收广播            registerReceiver(receiveBroadCast, filter);首先我们实现了一个ReceiveBroadCast 类,它继承了BroadcastReceiver并实现了其中的onReceive方法,这样当这个广播被接收的时候就会执行这个方法。注意我们在注册广播的时候使用了filter.addAction方法添加了一个过滤器。如果没有这一句,就相当于广播电台没有告诉咱们收音机用户接收的频率,就不好收听这个广播了。注意!动态广播需要对广播进行注销     unregisterReceiver(flag); //注销相对应的Action那么一个动态的广播就简单的实现了。1.2-静态广播(通过配置文件注册)<receiver android:name="com.qlf.broadCast.broadCastReceiveByxml">    <intent-filter>        <action android:name="com.qlf.broadCastFlag">        </action>    </intent-filter></receiver>receiver中的android:name就是我们在程序中的那个接收广播的类。下面的intent-filter和我们讲到的功能类似,而这个action就是上面的那个flag

除了使用我们自己发送广播,android也内置了许多广播

分享一个Android系统广播大全http://blog.csdn.net/u013290075/article/details/51115648


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表