Broadcast是广播,和Android内的事件一样,它可以发出一个广播(事件),注册了该广播接收器(事件监听器)的所有组件都会接收到该广播,从而调用自己的响应方法(事件响应处理)。

  下面将详细的阐述如何发送Broadcast和使用BroadcastReceiver过滤接收的过程:

  首先在需要发送信息的地方,把要发送的信息和用于过滤的信息(如Action、Category)装入一个Intent对象,然后通过调用 sendOrderBroadcast()或sendStickyBroadcast()方法,把 Intent对象以广播方式发送出去。

  当Intent发送以后,所有已经注册的BroadcastReceiver会检查注册时的IntentFilter是否与发送的Intent相匹配,若匹配则就会调用BroadcastReceiver的onReceive()方法。所以当我们定义一个BroadcastReceiver的时候,都需要实现onReceive()方法。

  代码如下:

package com.example.broadcastdemo;

import android.app.Activity;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.View;
import android.widget.Button; public class MainActivity extends Activity { private Button btnSendBroadCast, btnRegBCR, btnUnregBCR;
private final MyBC mybc = new MyBC(); @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); btnSendBroadCast = (Button) findViewById(R.id.btnSendBroadCast);
btnRegBCR = (Button) findViewById(R.id.btnRegBCR);
btnUnregBCR = (Button) findViewById(R.id.btnUnregBCR); btnSendBroadCast.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View v) {
// Intent i = new Intent(MainActivity.this, MyBC.class);
Intent i = new Intent(MyBC.ACTION);
i.putExtra("txt", "Hello, LJY!"); sendBroadcast(i);
}
}); //Register a BroadCast Receiver
btnRegBCR.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View v) {
// an IntentFilter is an address.
registerReceiver(mybc, new IntentFilter(MyBC.ACTION));
}
}); btnUnregBCR.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View v) {
unregisterReceiver(mybc);
}
}); }
}
package com.example.broadcastdemo;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent; public class MyBC extends BroadcastReceiver { public static final String ACTION = "com.example.broadcastdemo.intent.action.MyBC"; @Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
System.out.println("onReceive data = " + intent.getStringExtra("txt")); } }

最新文章

  1. CClayer ignoreAnchorPointForPosition 参数的作用
  2. Hadoop TextInputFormat源码分析
  3. asp.net for itextsharp 操作pdf
  4. Enum 枚举
  5. 取得网站的IP 地址
  6. Android Canvas不能换行,或者不识别\n,\r\n的解决方案
  7. A Byte of Python 笔记(12)python 标准库:sys、os,更多内容
  8. 该项目的建设maven片:4.协调和依赖,spring依赖注入demo
  9. abstract class 和 interface区别
  10. 服务器修改 ssh 22端口
  11. 【G】开源的分布式部署解决方案 - 预告篇
  12. ECSHOP购物车页面显示商品简单描述
  13. GNU/Hurd笔记整理
  14. Roundcube Webmail File Disclosure Vulnerability(CVE-2017-16651)
  15. 目标文件obj的各段 2
  16. vmware 挂起后不能恢复
  17. 基于 Django2 实现邮箱注册登录功能
  18. -bash: xhost: command not found
  19. python读取指定字节长度的文本
  20. js 定时更改div背景图片

热门文章

  1. 容器之间通讯方式\与pod关系
  2. Kubernetes K8S之affinity亲和性与反亲和性详解与示例
  3. pandas神器操作excel表格大全(数据分析数据预处理)
  4. RabbitMq 基本命令
  5. CF1108E2 Array and Segments (Hard version)
  6. 为什么重写 equals() 方法,一定要重写 hashCode() 呢?| HashMap
  7. 经典c程序100例 1-10
  8. 我发现了一个特别Man的Linux工具!!!
  9. rpm命令介绍
  10. 使用SpringBoot进行优雅的数据验证