广播文档
概述:在Android中,Broadcast是一种广泛运用的在应用程序之间传输信息的机制。我们拿广播电台来做个比方。我们平常使用收音机收音是这样的:许许多多不同的广播电台通过特定的频率来发送他们的内容,而我们用户只需要将频率调成和广播电台的一样就可以收听他们的内容了。Android中的广播机制就和这个差不多的道理。
作用:
其实,在什么是广播的第一句就已经说明了广播有什么用了。对了,笼统一点讲就是用来传输数据的。具体一点说就是: 1. 实现了不同的程序之间的数据传输与共享,因为只要是和发送广播的action相同的接受者都能接受这个广播。典型的应用就是android自带的短信,电话等等广播,只要我们实现了他们的action的广播,那么我们就能接收他们的数据了,以便做出一些处理。比如说拦截系统短信,拦截骚扰电话等等。 2. 起到了一个通知的作用,比如在service中要通知主程序,更新主程序的UI等。因为service是没有界面的,所以不能直接获得主程序中的控件,这样我们就只能在主程序中实现一个广播接受者专门用来接受service发过来的数据和通知了
分类:安卓广播分为标准广播和有序广播或常驻型广播和非常驻型广播
有序广播:
就是一种同步执行的广播,在广播发出之后,同一时刻只会有一个广播接收器能够接收到这条广播,当该广播接收器执行完OnReceive()方法逻辑后,广播才会继续传递。这种广播是可以被拦截的。
无序广播:
不可以被拦截,不可以被终止,不可以被修改,无序广播任何接收者只要匹配条件都可以接收到,无优先级问题。
注:
有些广播可以通过动态(java代码)静态(xml文件)方式任一种来注册;
有些广播则必须通过某一种方式来注册,比如开机广播必须通过XML方式来注册,监听手机屏幕解锁开锁则必须通过java代码来注册。
注册:
// 注册广播接收
receiveBroadCast = new ReceiveBroadCast();
IntentFilter filter = new IntentFilter();
filter.addAction(flag); //只有持有相同的action的接受者才能接收此广播
registerReceiver(receiveBroadCast, filter);
public class ReceiveBroadCast extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent)
{
//得到广播中得到的数据,并显示出来
String message = intent.getStringExtra("data");
txtShow.setText(message);
}
}
网友评论