广播
private ReceiveBroadCast receiveBroadCast; //广播实例
public class RegisteLinster implements OnClickListener
{
@Override
public void onClick(View view)
{
// 注册广播接收
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);
}
}
首先我们实现了一个ReceiveBroadCast 类,它继承了BroadcastReceiver并实现了其中的onReceive方法,这样当这个广播被接收的时候就会执行这个方法。注意我们在注册广播的时候使用了filter.addAction方法添加了一个过滤器。如果没有这一句,就相当于广播电台没有告诉咱们收音机用户接收的频率,就不好收听这个广播了。
再来看看如何取消注册,是的程序不再接收这个类型的广播了。
1
2
3
4
5
6
7
8
9
public class UnregisteLinster implements OnClickListener
{
@Override
public void onClick(View arg0)
{
unregisterReceiver(receiveBroadCast);
}
}
怎么样?是不是超级简单的啊,就是将我们上面的那个广播类的实例传进去就行了。现在注册,取消注册都好了,就剩下如何发送了。看代码:
1
2
3
4
5
6
7
8
9
10
11
public class SendBroadCastListener implements OnClickListener
{
@Override
public void onClick(View arg0)
{
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); //发送广播
}
}
动态注册方式
我们在程序中设置了三个按钮,分别是“注册广播”,“取消注册”和“发送广播”。然后每个按钮设置点击事件来完成广播的演示。
最简单的项目的建立过程和按钮事件的建立我再这里就不罗嗦了,不会的可以下载下面的DEMO源码查看。直接看三个按钮的实现方式。
首先是注册广播的按钮事件代码:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
private ReceiveBroadCast receiveBroadCast; //广播实例public class RegisteLinster implements OnClickListener{ @Override public void onClick(View view) { // 注册广播接收 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); }} |
首先我们实现了一个ReceiveBroadCast 类,它继承了BroadcastReceiver并实现了其中的onReceive方法,这样当这个广播被接收的时候就会执行这个方法。注意我们在注册广播的时候使用了filter.addAction方法添加了一个过滤器。如果没有这一句,就相当于广播电台没有告诉咱们收音机用户接收的频率,就不好收听这个广播了。
再来看看如何取消注册,是的程序不再接收这个类型的广播了。
|
1
2
3
4
5
6
7
8
9
|
public class UnregisteLinster implements OnClickListener{ @Override public void onClick(View arg0) { unregisterReceiver(receiveBroadCast); }} |
怎么样?是不是超级简单的啊,就是将我们上面的那个广播类的实例传进去就行了。现在注册,取消注册都好了,就剩下如何发送了。看代码:
|
1
2
3
4
5
6
7
8
9
10
11
|
public class SendBroadCastListener implements OnClickListener{ @Override public void onClick(View arg0) { 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); //发送广播 }} |
浙公网安备 33010602011771号